Hallo,
ich habe eine JTable mit einer ComboBox als CellEditor. In der soll man auch eingeben können.
Das Problem ist, dass er schon in den Editor springt, wenn ich einmal auf die Zelle klicke und wenn ich sie verlasse, wird dann jedes Mal setValueAt mit einem leeren String aufgerufen. Ich kann das natürlich abfangen, aber warum kann man denn schon nach einmal klicken editieren? Bei meiner Text-Spalte gehts auch erst nach dem Doppelklick. Der Unterschied ist, dass ich da keinen eigenen Editor für hab.
Also hier is mein Editor für die Combobox:
ich habe eine JTable mit einer ComboBox als CellEditor. In der soll man auch eingeben können.
Das Problem ist, dass er schon in den Editor springt, wenn ich einmal auf die Zelle klicke und wenn ich sie verlasse, wird dann jedes Mal setValueAt mit einem leeren String aufgerufen. Ich kann das natürlich abfangen, aber warum kann man denn schon nach einmal klicken editieren? Bei meiner Text-Spalte gehts auch erst nach dem Doppelklick. Der Unterschied ist, dass ich da keinen eigenen Editor für hab.
Also hier is mein Editor für die Combobox:
Code:
class MyComboBoxEditor<T> extends AbstractCellEditor implements
TableCellEditor {
private JComboBox box = null;
public MyComboBoxEditor(T[] items) {
box = new JComboBox(items);
box.setEditable(true);
}
public void addItem(T item){
box.addItem(item);
}
public Object getCellEditorValue() {
return box.getSelectedItem();
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if (value instanceof Category) {
box.setSelectedItem((Category) value);
}
if (value instanceof Rating){
box.setSelectedItem((Rating)value);
}
if (value == null){
box.setSelectedItem(null);
}
return box;
}
}