B
betram
Gast
Hallo,
ich habe eine JTable, bei der ich einzelne Zellen mit unterschiedlichen JComboBoxes befüllen möchte. Folglich habe ich einen DefaultCellEditor wie folgt umgeschrieben (zur Übersichtlichkeit ein wenig gekürzt:
Wenn ich nun in meinem ActionListener das aktuelle Element der Zelle mit jTable.getSelectedRow(); anzeigen lasse, so ist dies immer das Element, welches zu vor angewählt war. Ich muss folglich immer zweimal auf ein ComboBox Item klicken, damit ich das aktuelle Ergebnis verarbeiten kann...Da es mit einem StandardListener (allerdings mit gleichen ComboBoxes für die ganze Spalte) funktioniert ht, vermute ich, daß es am geposteten Code liegen muss.
Muss ich selbst eine Funktion schreiben/überschreiben, welche das aktuelle Element setzt?
ich habe eine JTable, bei der ich einzelne Zellen mit unterschiedlichen JComboBoxes befüllen möchte. Folglich habe ich einen DefaultCellEditor wie folgt umgeschrieben (zur Übersichtlichkeit ein wenig gekürzt:
Java:
class MyTableCellEditor extends DefaultCellEditor {
private List<JComboBox> data;
public MyTableCellEditor() {
super(new JComboBox());
data = new LinkedList();
}
public void addItemForCell(int row, int column, Object item) {
boolean exists = false;
if (column == 10) // nur spalte 10 wird im moment benötigt
{
if (data .size() - 1 < row) { // already item added for cell
data .add(new JComboBox());
}
data .get(row).addItem(item);
}
public JComboBox getItemsForCell(int row, int column) {
JComboBox temp = new JComboBox();
if (column == 10) {
temp = data .get(row);
} return temp;
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
JComboBox combo = (JComboBox) super.getTableCellEditorComponent(table, value, isSelected, row, column);
combo.removeAllItems();
combo.addActionListener(new ComboBoxSelectionHandler());
JComboBox temp = getItemsForCell(row, column);
for (int i = 0; i < temp.getItemCount(); i++) {
combo.addItem(temp.getItemAt(i));
}
return combo;
}
}
Wenn ich nun in meinem ActionListener das aktuelle Element der Zelle mit jTable.getSelectedRow(); anzeigen lasse, so ist dies immer das Element, welches zu vor angewählt war. Ich muss folglich immer zweimal auf ein ComboBox Item klicken, damit ich das aktuelle Ergebnis verarbeiten kann...Da es mit einem StandardListener (allerdings mit gleichen ComboBoxes für die ganze Spalte) funktioniert ht, vermute ich, daß es am geposteten Code liegen muss.
Muss ich selbst eine Funktion schreiben/überschreiben, welche das aktuelle Element setzt?
Zuletzt bearbeitet von einem Moderator: