2012-09-10 39 views
8

Tôi đang viết một tiện ích Java Desktop trong Java swing và có phần GUI tối thiểu trong đó, hầu hết công việc được thực hiện trên phía máy chủ, tức là phụ trợ. Vì vậy, tôi không muốn dành nhiều thời gian vào phần GUI, học các điều khiển và widget khác nhau. Vấn đề là Swing có hai điều khiển (cho tôi) cùng một nhiệm vụ tức là menu thả xuống và chúng là JComboBoxJSpinner Tôi không biết sự khác biệt và tôi không muốn bất kỳ giới hạn nào cản trở tôi hoàn thành nhiệm vụ của mình sau khi tôi ' đã chọn một.Sự khác biệt trong JComboBox và JSpinner

Tôi đã sử dụng menu thả xuống để hiển thị List<String> được trả về từ DataBase và có thể có tới hàng nghìn giá trị. Để ngăn người dùng di chuyển, tôi sẽ lấy bảng chữ cái bắt đầu làm đầu vào hoặc một số giới hạn danh mục sẽ có ở đó, có thể là tôi sẽ sử dụng các giá trị cụ thể được hiển thị từ List<String>. tôi muốn chương trình của tôi hoạt động hiệu quả vì nó có thể và dành ít thời gian nhất cho giao diện người dùng vì có rất nhiều hoạt động trên chương trình phụ trợ.

Bất kỳ trợ giúp sẽ được đánh giá cao

+1

Từ wiki thẻ JSpinner: "Mặc dù hộp tổ hợp cung cấp chức năng tương tự, nhưng các trình quay đôi khi được ưu tiên vì chúng không yêu cầu danh sách thả xuống có thể làm mờ dữ liệu quan trọng". –

Trả lời

4

Tôi đã sử dụng danh sách thả xuống để hiển thị Danh sách trở về từ DataBase và nó có thể có tới hàng nghìn giá trị.

  • tất cả nêu trên JComponents được dựa trên mảng sớm, có lẽ cần phải chuyển đổi java.util.List để String[] hoặc Vector (phụ thuộc của logic mã của bạn)

  • không ai trong số GUI được thiết kế để Helt hàng ngàn các giá trị, đã xem xét Paginations for Databases engine

  • được đề cập ở trên AutoComplete JComboBox/JTextField hoạt động mà không có bất kỳ vấn đề nào tối đa 2k hàng trên todays PC

  • để tìm kiếm hoặc lựa chọn từ mảng largiest bạn có nhìn vào Stepped JComboBox (khoảng hai hoặc nhiều JComboBoxes)

    1.st để giảm lựa chọn từ [0-9, A-Z]

    2.nd để tìm kiếm trong hồ sơ bắt đầu with A (ví dụ)

  • redirect Database sự kiện để các nhiệm vụ nền và sử dụng SwingWorker hoặc Runnable#Thread

2

JComboBox phù hợp với yêu cầu của bạn. JComboBox phù hợp để hiển thị danh sách các giá trị. JSpinner được sử dụng khi bạn muốn thực hiện một số chức năng như tăng/giảm trên trường văn bản của Spinner.

Điều này Oracle tutorial giải thích về JSpinner và điểm tương đồng của nó là JComboBox. Có một ứng dụng demo cũng có.

4

Sự khác biệt chính nằm trong mô hình: a thực hiện SpinnerModel tạo ra một chuỗi giá trị, trong khi ComboBoxModel thì không. Nếu các đối tượng trong một SpinnerModel không có thứ tự phù hợp, bạn sẽ cần áp đặt một đối tượng.

Thực tế, "hàng nghìn giá trị" sẽ được hưởng lợi từ phương pháp tiếp cận phụ, như được đề xuất trong @ mKorbel's answer.

Các vấn đề liên quan