2012-09-10 17 views
8

Sto scrivendo un'utilità Java Desktop in Java swing e ho una minima parte della GUI, la maggior parte del lavoro viene eseguita sul lato server, cioè il backend. Quindi, non voglio dedicare molto tempo alla parte della GUI, imparando diversi controlli e widget. Il problema è che Swing ha due controlli per (per me) stessi compiti cioè menu a discesa e sono JComboBox e JSpinner Non conosco la differenza e non voglio alcuna limitazione che mi impedisca di completare il mio compito dopo I ' ne ho selezionato uno.Differenza in JComboBox e JSpinner

Devo utilizzare il menu a discesa per visualizzare List<String> restituito da DataBase e può avere un massimo di migliaia di valori. Per impedire all'utente di scorrere prendo l'alfabeto di partenza come input o alcune limitazioni di categoria ci saranno così, potrebbe essere che userò valori specifici per essere visualizzati da List<String>. Voglio che il mio programma sia il più efficiente possibile e trascorri meno tempo sul front end perché ci sono molte operazioni sul back-end.

Qualsiasi aiuto sarà molto apprezzato

+1

Dal wiki del tag JSpinner: "Sebbene le caselle combinate offrano funzionalità simili, i filatori a volte sono preferiti perché non richiedono un elenco a discesa che possa oscurare dati importanti." –

risposta

4

ho da usare menu a discesa per visualizzare l'elenco tornato da DataBase e può avere un massimo di migliaia di valori.

  • tutto di cui sopra JComponents sono basate su array di prematura, forse necessario convertire java.util.List a String[] o Vector (dipende delle vostre logiche di codice)

  • nessuno di GUI sono designati a Helt le migliaia di valori, date un'occhiata a Paginations for Databases engine

  • sopra menzionato AutoComplete JComboBox/JTextField funziona senza alcun problema fino a 2k righe su PC odierni

  • per la ricerca o le selezioni da array largiest voi hanno un'occhiata a Stepped JComboBox (circa due o più JComboBoxes)

    1.st per la selezione ridotta da [0-9, A-Z]

    2.ND per la ricerca nei registri iniziato with A (per esempio)

  • reindirizzare Database eventi per le attività in background e da usare SwingWorker o Runnable#Thread

2

JComboBox adatta alle vostre esigenze. JComboBox è adatto per la visualizzazione di un elenco di valori. JSpinner viene utilizzato quando si desidera eseguire alcune funzionalità come l'incertezza/decremento nel campo di testo dello Spinner.

Questo Oracle tutorial spiega circa JSpinner e le sue somiglianze con JComboBox. C'è anche un'app demo.

4

La differenza fondamentale risiede nel modello: un'implementazione SpinnerModel crea un sequenza di valori, mentre un ComboBoxModel no. Se gli oggetti in un SpinnerModel non hanno un ordine naturale adatto, è necessario imporne uno.

In pratica, "migliaia di valori" beneficeranno di un approccio ausiliario, come suggerito in @ mKorbel answer.