Hi,
ich habe ein Problem mit einer JCombobox in einem JTable. Ein viel besprochenes Thema, doch für meinen Fall habe ich noch keine Lösung.
Folgender Code funktioniert zu 99% so wie ich es will:
(Anmerkung: Ist nur eine Testklasse, nichts Ernsthaftes...)
Was mein Problem ist:
Der Table wird erstellt und klicke ich auf die entsprechenden Zellen, wird auch die Combobox korrekt angezeigt.
Beim ersten Start sind die Zellen jedoch leer. Wie bekomme ich es hin, dass dort bereits das erste Item der CB ausgewählt ist? :bahnhof:
LG
Darkwall
ich habe ein Problem mit einer JCombobox in einem JTable. Ein viel besprochenes Thema, doch für meinen Fall habe ich noch keine Lösung.
Folgender Code funktioniert zu 99% so wie ich es will:
(Anmerkung: Ist nur eine Testklasse, nichts Ernsthaftes...)
Java:
public class TableButtons extends JFrame {
private final JTable table;
public TableButtons() {
super("Table Buttons");
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
this.setLayout(new BorderLayout());
table = new JTable(6, 4) {
@Override
public TableCellEditor getCellEditor(int row, int column) {
String[] items2 = {"Circle", "Square", "Triangle"};
String[] items3 = {"Circle2", "Square2", "Triangle2"};
JComboBox comboBox2 = new JComboBox(items2);
DefaultCellEditor dce2 = new DefaultCellEditor(comboBox2);
JComboBox comboBox3 = new JComboBox(items3);
DefaultCellEditor dce3 = new DefaultCellEditor(comboBox3) {
@Override
public boolean stopCellEditing() {
JComboBox cb = (JComboBox) getComponent();
cb.setSelectedIndex(0);
return true;
}
};
if (column == 0) {
return dce2;
} else if (column == 1 && row == 0) {
return dce3;
} else if (column == 1 && row > 0) {
return dce2;
} else {
return super.getCellEditor();
}
}
};
DefaultTableModel model = (DefaultTableModel) table.getModel();
add(new JScrollPane(table), BorderLayout.CENTER);
pack();
}
public static void main(final String[] args) {
new TableButtons().setVisible(true);
}
}
Der Table wird erstellt und klicke ich auf die entsprechenden Zellen, wird auch die Combobox korrekt angezeigt.
Beim ersten Start sind die Zellen jedoch leer. Wie bekomme ich es hin, dass dort bereits das erste Item der CB ausgewählt ist? :bahnhof:
LG
Darkwall