2012-05-04 43 views
11

Tôi đã xây dựng nhiều nhiều giao diện: và tôi không thích phụ thuộc vào thư viện vì vậy tôi tự mình làm nhiều điều cơ bản. Một điều mà tôi kết thúc làm lặp đi lặp lại là lập bản đồ nguyên thủy cho các thành phần GUI.Thư viện GUI để xử lý nguyên thủy và mảng/bộ sưu tập nguyên thủy

Ví dụ nếu nó là một boolean Tôi thường sử dụng JCombobox với hai lựa chọn ("true", "false") và nếu nó là int tôi sử dụng một JTextField. Phần lớn công việc là để đi từ và đến văn bản ...

Một số các ánh xạ Ví dụ:

  • int hay Integer =>JTextField hoặc JSpinner
  • boolean =>JTextField, JComboBox hoặc JCheckBox
  • int[] =>JList (với nút "thêm" và "xóa")
  • Set<Byte> => có lẽ là giống như mảng

Vì vậy, để những câu hỏi:

  • Có đã là một thư viện mà có ánh xạ như thế này hay tôi cần phải "phát minh" nó một lần nữa?
  • Tôi đã thấy jfg sử dụng phần tinh chỉnh và SWT làm lối vào (bạn có thể triển khai giao diện người dùng mới bằng cách sử dụng xoay nhưng đó chính xác là những gì tôi đang cố tránh). Có một thư viện mô phỏng sử dụng swing và refection?
+1

đẹp câu hỏi, 1 – mKorbel

+2

boolean Guess nên được ánh xạ tới JCheckBox hoặc JToggleButton. Nhưng câu hỏi là tốt +1 – StanislavL

+2

Điều này nhắc tôi về cách 'JTable' chọn trình kết xuất và trình chỉnh sửa. –

Trả lời

2

có 2 thư viện ràng buộc tôi đã có một số kinh nghiệm với:

  1. glazed lists - thư viện này hoàn toàn tỏa sáng khi bạn muốn ánh xạ một Bộ sưu tập đến một JTable (một mục cho mỗi hàng, cột là các thuộc tính của đối tượng).
  2. jgoodies binding - một thư viện đa năng hơn để ánh xạ các thuộc tính bean thành phần tử gui. nó phức tạp hơn một chút và khó nhận.

và tại sao nguyên thủy? im giả sử bạn lưu trữ mô hình của bạn (tập hợp tất cả các giá trị được hiển thị/chỉnh sửa bởi gui) trong một hoặc nhiều đối tượng không? nếu vậy, bạn có thể dựa vào autoboxing và làm việc với các trình bao bọc đối tượng trong gui.

1

Bạn nên đề cập đến JavaFX, mà vẫn không phải là bia của tôi.

0

Bạn có thể thấy thú vị khi xem seesaw là thư viện GUI cho Clojure dựa trên Swing.

Nó thực hiện một công việc khá tốt khi gói chức năng Swing trong các chức năng khá đơn giản - một số ý tưởng thiết kế tốt ngay cả khi bạn không sử dụng nó trực tiếp.Ví dụ, nó có thể ràng buộc điều khiển trực tiếp đến đối tượng dữ liệu có thể thay đổi:

; Bind a the value of a slider to an atom, with a transform 
; that forces the value to [0, 1] 
(let [s (slider :min 0 :max 1) 
     a (atom 0.0)] 
    (bind s (transform/100.0) a)) 
Các vấn đề liên quan