Ich habe ein Datenbankschema = welches in einer JCombobox als JTable-Spalte angezeigt wird, um einen Namen auszuwählen. Aber ich möchte das ID-Feld (als Fremdschlüssel) in eine andere Tabelle einfügen.
Wenn Sie im Drop-Down-Menü ein Element auswählen, wird das ausgewählte Element in den angezeigten Bereich des Kombinationsfelds gebracht.
Was ich tun möchte, ist, wenn ein beliebiges Element (String) in der Combo-Box seinen entsprechenden Integer-Schlüssel (kann in einer sortierten Karte gehalten werden) sollte im Combobox-Platzhalter-Bereich angezeigt werden, so dass, wenn den Wert von die JTable.getValueAt (Zeile, Spalte), ich bekomme den Integer-Schlüssel, nicht den String-Wert. Bitte helfen Sie mir, wie kann ich das tun?
Da gibt es keinen automatischen Weg es zu tun :(. Ich verwende eine Karte, um meine Werte und Schlüssel zu behalten.
%Vor%Holen Sie sich alle Kategorien (Schlüssel, Wert) und füllen Sie Karte und Combo
%Vor%Die vierte Spalte meiner JTable sollte Combobox sein,
%Vor%Wenn Sie den Wert in der Combobox bearbeiten, wird der Text angezeigt, aber um den Wert in der Datenbanktabelle zu aktualisieren, muss ich den Integer-Schlüssel erhalten.
%Vor%Für die Aktualisierung der Datenbank,
%Vor%Und hier ist der getKeyForValue,
%Vor%Sie sollten ein Objekt im TableModel speichern, das sowohl den anzuzeigenden Zeichenfolgenwert als auch den Integer-Wert für den Schlüssel enthält. Dann greifen Sie auf table.getValueAt (...) zu, Sie haben Zugriff auf das Objekt, das beide Informationen enthält.
Hier ist ein Beispiel für ein eigenständiges Kombinationsfeld:
%Vor%Ich habe eine großartige und kluge Lösung:
%Vor% Ich setze das Modell für rolComboBox
mit einem Vector mit einem benutzerdefinierten Objekt, das resultSet
-Objekt enthält alle Daten von der Datenbank.
Nachdem ich die ID aus dem comboBox
bekommen soll bekomme ich es mit der Methode getSelectedItem
.