2012-09-10 43 views
8

我正在Java swing中編寫一個Java桌面實用程序,並且其中包含最少的GUI部分,大部分工作都在服務器端(即後端)完成。所以,我不想在GUI部分花費大量時間,學習不同的控件和小部件。問題是,Swing有兩個控制(對我來說)相同的任務,即下拉菜單,它們是JComboBoxJSpinner我不知道區別,我不希望任何限制阻止我完成我的任務後,已經選擇了一個。JComboBox和JSpinner的區別

我必須使用下拉菜單來顯示從DataBase返回的List<String>,它可以有多達數千個值。爲了防止用戶滾動,我將採用起始字母作爲輸入或某些類別限制將存在,因此,我可能會使用特定值從List<String>中顯示。我希望我的程序能夠儘可能高效,並且最少花費在前端上,因爲後端有很多操作。

任何幫助將高度讚賞

+1

來自JSpinner標籤wiki:「雖然組合框提供了類似的功能,但是有時候首選spinners,因爲它們不需要可以隱藏重要數據的下拉列表。」 –

回答

4

我已經使用下拉菜單來顯示列表從數據庫中返回它可以有多達數千個值。

  • 上述所有JComponents基於過早陣列上,也許需要java.util.List轉換爲String[]Vector(取決於你的代碼邏輯的)

  • 沒有GUI的被指定爲helt數千值,看看Paginations for Databases engine

  • 上面提到AutoComplete JComboBox/JTextField工作沒有任何問題在今天的PC上最多2k行

  • 從largiest陣列搜索或選擇你看看Stepped JComboBox(約兩個或兩個以上JComboBoxes

    1.st用於降低選擇從[0-9, A-Z]

    2。第二在記錄搜索開始with A(例如)

  • 重定向Database事件到後臺任務和使用SwingWorkerRunnable#Thread

2

JComboBox適合你的需求。 JComboBox適合顯示值的列表。當您想要在Spinner的文本字段上執行一些功能(例如增量/減量)時使用JSpinner。

這個Oracle tutorial解釋了關於JSpinner及其與JComboBox的相似之處。還有一個演示應用程序。

4

關鍵的區別在於模式:SpinnerModel實現創建一個數值的序列,而ComboBoxModel沒有。如果SpinnerModel中的對象沒有合適的自然順序,則需要強加一個。

實際情況下,「數千個值」將受益於@ mKorbel的answer中提出的輔助方法。