jTable mit JComboBox auslesen

Newcommer

Mitglied
Hallo Forum,
mein Problem:
Ich habe in einer JTable eine editierbare Spalte, in den Zellen dieser Spalte eine JComboBox um einen Wert zu wählen/ändern. Das funktioniert nach der Anleitung von SUN "How to Use Tables" auch prima. Meine JComboBox enthält (extra Klasse) einen String, der angezeigt wird und eine ID, die ich auslesen und speichern möchte.
Wie kann ich die ID und nicht den angezeigten String bekommen?
Java:
class Row {					  // Klasse zum Füllen der jCombobox mit ID und Value
    private String id, val;   // habe ich auch hier aus dem Forum

    public Row(String id, String val) {
        this.id = id;
        this.val = val;
    }
    public String getId() {
        return id;
    }
    public String getVal() {
        return val;
    }
    public String toString() {
        return val;
    }

...

TableColumn KSTColumn = jTable_letzteDS.getColumnModel().getColumn(3);
	    JComboBox KSTcomboBox = new JComboBox();
	    KSTcomboBox.addActionListener(new java.awt.event.ActionListener() {
	    	public void itemStateChanged(java.awt.event.ActionEvent e) {
	    		read_id();
	    	}
	    });
	    KSTcomboBox.addItem(new Row("0", "111"));
	    KSTcomboBox.addItem(new Row("1", "112"));
	    KSTcomboBox.addItem(new Row("2", "211"));
	    KSTcomboBox.addItem(new Row("3", "311"));
	    KSTColumn.setCellEditor(new DefaultCellEditor(KSTcomboBox));

...

void read_id() {			                                    // soll IDaus Tabelle lesen
		String kst = jTable_letzteDS.getValueAt(jTable_letzteDS.getSelectedRow(), 3).toString();
   // So bekomme ich den in der Zelle angezeigten Wert !!!
   // Wie komme ich hier an die ID ????
}
Wie gesagt das Auslesen des angezeigten Wertes ist kein Problem, nur brauche ich die ID.
Wenn die JComboBox nicht in einer JTable-Zelle steckt, komme ich über
Java:
((Row) KSTcomboBox_Sub.getSelectedItem()).getId()
an die ID. Aber in einer Tabellenzelle ???

Vielen Dank schon mal.
 
Zuletzt bearbeitet:

Newcommer

Mitglied
Hallo Michael...,

danke für die Antwort.
So richtig verstehe ich das noch nicht.
Wenn ich den Rückgabewert der toString() aus Row anpasse, also statt val id eintrage (siehe code), sehe ich doch in der jComboBox auch nur die id zur Auswahl.
Java:
class Row {																// Klasse zum Füllen der jCombobox mit Value und ID
    private String id, val;

    public Row(String id, String val) {
        this.id = id;
        this.val = val;
    }
    public String getId() {
        return id;
    }
    public String getVal() {
        return val;
    }
    public String toString() {
        return id;
    }
}
Die richtige Tabelle sieht dann so aus:
jtable.gif

Was mache ich falsch bzw. wie hast Du das gemeint?

MfG
 

Michael...

Top Contributor
Mit einem eigenen TableCellRenderer kannst Du definieren, was in der Tabelle und mit einem eigenen ListCellRenderer kannst Du definieren, wie das Objekt in der ComboBox dargestellt wird.

Wo Du jetzt genau was benötigst ist mir allerdings nicht ganz klar.
 

Newcommer

Mitglied
Hallo Michael,

ich möchte in den Tabellenzellen und in der Combobox die Werte (z.B.: 211) angezeigt bekommen.
Beim Auslesen der Zellinhalte benötige ich aber die ID, die mit in der Combobox enthalten ist. Die ID und nicht die Werte speichere ich in einer Datenbank.
Zu meinem Verständnis noch eine "dumme" Frage: Ist die Combobax immer in der Tabellenzelle enthalten oder nur ab dem Moment des Klickens und Wärend des Editierens.

Danke schon mal.
 

Michael...

Top Contributor
ich möchte in den Tabellenzellen und in der Combobox die Werte (z.B.: 211) angezeigt bekommen.
Beim Auslesen der Zellinhalte benötige ich aber die ID, die mit in der Combobox enthalten ist. Die ID und nicht die Werte speichere ich in einer Datenbank.
Eigentlich müsstest Du das Objekt in der Zelle nach Row casten und darauf die Methode getID() aufrufen können.
Java:
Row row = (Row) table.getValueAt(x, y);
speichernInDatenbank(row.getID());
Zu meinem Verständnis noch eine "dumme" Frage: Ist die Combobax immer in der Tabellenzelle enthalten oder nur ab dem Moment des Klickens und Wärend des Editierens.
Letzteres, in der Tabelle (bzw. deren Model) ist keine ComboBox enthalten.
Es wird ein und diesselbe ComboBox zum Editieren aller Zellen gleichen "Typs" verwendet. Sonst müsste ja für jede Zellen eine ComboBox instanziert werden und das könnte bei grösseren Tabellen ganz schon auf den Speicher gehen.
Genauso wird zum Darstellen der Zelleninhalte ein Renderer (pro "Zellen-Typ") verwendet.
 

Newcommer

Mitglied
Hallo Michael, :applaus:

danke für die Antwort. Es funktioniert so wie ich mir das vorgestellt hatte. :toll:
Hier noch mal der Code, falls es noch jemand braucht.
Java:
class Row {                   // Klasse zum Füllen der jCombobox mit ID und Value
    private String id, val;   // habe ich auch hier aus dem Forum
 
    public Row(String id, String val) {
        this.id = id;
        this.val = val;
    }
    public String getId() {
        return id;
    }
    public String getVal() {
        return val;
    }
    public String toString() {
        return val;
    }
 
...
 
TableColumn KSTColumn = jTable_letzteDS.getColumnModel().getColumn(3);
        JComboBox KSTcomboBox = new JComboBox();
        KSTcomboBox.addActionListener(new java.awt.event.ActionListener() {
            public void itemStateChanged(java.awt.event.ActionEvent e) {
                read_id();
            }
        });
        KSTcomboBox.addItem(new Row("0", "111"));
        KSTcomboBox.addItem(new Row("1", "112"));
        KSTcomboBox.addItem(new Row("2", "211"));
        KSTcomboBox.addItem(new Row("3", "311"));
        KSTColumn.setCellEditor(new DefaultCellEditor(KSTcomboBox));
 
...
 
void read_id() {                                                // soll ID aus Tabelle lesen
        Row row = (Row) jTable_letzteDS.getValueAt(jTable_letzteDS.getSelectedRow(), 3);
	String id = row.getId(); // So komme ich hier an die ID 
}
Tschüß und nochmals Danke :toll:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing JCombobox in einem JTable vorbelegen AWT, Swing, JavaFX & SWT 4
D Swing Erstes Item einer JCombobox in JTable anzeigen AWT, Swing, JavaFX & SWT 2
N JComboBox in JTable [Swing] -> totaler UI-Einsteiger AWT, Swing, JavaFX & SWT 3
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
F Swing JComboBox in JTable AutoComplete + Tab AWT, Swing, JavaFX & SWT 4
M JComboBox Item-Auswahl in JTable AWT, Swing, JavaFX & SWT 2
H Unterschiedliche JComboBox je JTable Zeile AWT, Swing, JavaFX & SWT 4
D Swing jTable mit jComboBox in einem Coloumn AWT, Swing, JavaFX & SWT 28
S Einzelne JComboBox in JTable austauschen AWT, Swing, JavaFX & SWT 4
S Swing AWT-Exception bei JTable mit JComboBox beim Löschen der letzten Zeile AWT, Swing, JavaFX & SWT 3
C jComboBox in jTable ohne Klick öffnen AWT, Swing, JavaFX & SWT 4
O Swing JComboBox in JTable AWT, Swing, JavaFX & SWT 14
K Swing JComboBox in JTable AWT, Swing, JavaFX & SWT 9
B JComboBox in JTable, Actionlistener AWT, Swing, JavaFX & SWT 10
E Swing JComboBox als CellEditor in JTable zeigt Elemente nicht sofort an AWT, Swing, JavaFX & SWT 5
M Swing jcombobox als jtable-editor: neues Item auswählen AWT, Swing, JavaFX & SWT 4
K Swing JTable mit JComboBox AWT, Swing, JavaFX & SWT 10
A JComboBox bei Veränderungen in der JTable mit aktualisieren AWT, Swing, JavaFX & SWT 6
A JComboBox-Zeilen in JTable AWT, Swing, JavaFX & SWT 2
W JComboBox in einer Reihe von JTable AWT, Swing, JavaFX & SWT 7
G Swing JComboBox in JTable beim Aufklappen befüllen AWT, Swing, JavaFX & SWT 3
S JComboBox in JTable wird erst nach klick angezeigt AWT, Swing, JavaFX & SWT 2
O JCombobox in EINER JTable Cell AWT, Swing, JavaFX & SWT 5
G JComboBox und JTable transparent AWT, Swing, JavaFX & SWT 18
D JCombobox in JTable AWT, Swing, JavaFX & SWT 5
J JCombobox in JTable klappt beim ersten Tastendruck zu AWT, Swing, JavaFX & SWT 3
G JTable mit JComboBox als Celleditor, selectedRow falsch! AWT, Swing, JavaFX & SWT 3
A JCombobox in JTable AWT, Swing, JavaFX & SWT 4
S JCbox in Jtable Zelle nur anzeigen , wenn JCombobox ="a AWT, Swing, JavaFX & SWT 3
H JTable und JCombobox ? AWT, Swing, JavaFX & SWT 2
M JComboBox in JTable immer sichtbar AWT, Swing, JavaFX & SWT 16
R JComboBox über ein AstractTableModel in eine JTable packen AWT, Swing, JavaFX & SWT 2
S JTable (Scrollpane und ColumnNames) und JComboBox AWT, Swing, JavaFX & SWT 2
M JTable mit JCombobox eigene Auswahl pro Zeile ? AWT, Swing, JavaFX & SWT 3
TRunKX Kann man ne JCOmboBox in eine JTAble einfügen AWT, Swing, JavaFX & SWT 10
D JTable und JComboBox oder CheckboxGroup AWT, Swing, JavaFX & SWT 6
S JComboBox in JTable AWT, Swing, JavaFX & SWT 8
K JTable als Popup in einer JComboBox? AWT, Swing, JavaFX & SWT 3
B Wert einer JCombobox in einer JTable setzen AWT, Swing, JavaFX & SWT 2
I Swing JTable zeichnet kein vertical Grid AWT, Swing, JavaFX & SWT 6
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
J addRow bei JTable AWT, Swing, JavaFX & SWT 6
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
Meeresgott Swing JTable AWT, Swing, JavaFX & SWT 4
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben