Ich schreibe ein Java-Desktop-Dienstprogramm in Java-Swing und habe einen minimalen GUI-Teil darin, die meiste Arbeit wird auf Serverseite getan, d. h. Backend. Also möchte ich nicht viel Zeit mit dem GUI-Teil verbringen und verschiedene Steuerelemente und Widgets lernen. Das Problem ist, dass Swing zwei Steuerelemente für (für mich) die gleichen Aufgaben hat, dh Dropdown-Menü, und sie sind JComboBox
und JSpinner
Ich kenne den Unterschied nicht und ich möchte keine Einschränkung, die mich daran hindern würde, meine Aufgabe, nachdem ich eine ausgewählt habe.
Ich muss das Dropdown-Menü verwenden, um List<String>
anzuzeigen, das von DataBase zurückgegeben wurde, und es können Tausende von Werten enthalten sein. Um den Benutzer vom Scrollen abzuhalten, nehme ich das Startalphabet als Eingabe, oder es wird eine Kategoriebeschränkung geben. Daher kann es sein, dass ich bestimmte Werte verwende, die von List<String>
angezeigt werden. Ich möchte, dass mein Programm so effizient wie möglich ist und am wenigsten Zeit für das Frontend benötigt, da es viele Operationen im Backend gibt.
Jede Hilfe wird sehr geschätzt
Sie sprechen über AutoComplete JComboBox / JTextField
mit etwas Aufwand könnte angewendet werden ( AutoComplete JTextField
) zu JSpinner
too
Ich muss das Dropdown-Menü verwenden, um die Liste anzuzeigen, die von DataBase zurückgegeben wurde, und sie kann Tausende von Werten enthalten.
alle oben genannten JComponents
basieren auf einem vorzeitigen Array, müssen möglicherweise java.util.List
in String[]
oder Vector
konvertieren (abhängig von Ihren Code-Logiken)
Keine der grafischen Benutzeroberflächen ist für Tausende von Werten vorgesehen, siehe Paginations for Databases engine
oben erwähnt AutoComplete JComboBox / JTextField
funktioniert ohne Probleme bis zu 2k Zeilen auf den heutigen PCs
für die Suche oder die Auswahl aus den größten Arrays, die Sie gesehen haben Stepped JComboBox
(ungefähr zwei oder mehr JComboBoxes
)
1.st für reduzierte Auswahl von [0-9, A-Z]
2. nd für die Suche in Aufzeichnungen gestartet with A
(zum Beispiel)
Redirect Database
Ereignisse zu den Hintergrundaufgaben und SwingWorker
oder Runnable#Thread
Der Hauptunterschied liegt im Modell: a SpinnerModel
Implementation erstellt eine Sequenz von Werten, während eine ComboBoxModel
nicht. Wenn Objekte in SpinnerModel
keine geeignete natürliche Reihenfolge haben, müssen Sie eine vorgeben.
Aus praktischen Gründen werden "Tausende von Werten" von einem Hilfsansatz profitieren, wie in der Antwort von @mKorbel vorgeschlagen.
JComboBox
entspricht Ihrer Anforderung. JComboBox
eignet sich zum Anzeigen einer Werteliste. JSpinner wird verwendet, wenn Sie einige Funktionen wie Eingabe / Dekrement im Textfeld des Drehfelds ausführen möchten.
Dieses Oracle-Lernprogramm erklärt über JSpinner
und seine Ähnlichkeiten mit JComboBox
. Es gibt auch eine Demo-App.