Ich benutze eine JTable
die einen eigenen CellRenderer und Cell Editor hat.Aktualisiere CellRenderer nachdem eine DefaultCellEditor abgeleitete Instanz seine Aufgabe erledigt
Say enthält diese Tabelle 2 Spalten und x Reihen:
Die erste Spalte enthält einen Booleschen Wert, seine eigene Zellenwiedergabe und Zelleditor (a RadioButton-)
Die zweite Spalte enthält einen Stringwert, eine eigene Zelle Renderer : Es wird fett dargestellt, wenn die erste Spalte der aktuellen Zeile auf "True" gesetzt ist (Optionsfeld markiert)
Alle Werte werden vom Editor korrekt aktualisiert, aber die zweite Zeile wird nicht fett, wenn das Optionsfeld auf "True" gesetzt ist ...
Ich muss ein Optionsfeld aus einer anderen Zeile überprüfen, um die Änderungen zu sehen
Wo kann ich diese Änderungen auslösen?
Beifall und Dank für Ihre Hilfe
RadiobuttonTableCellEditor.java
public class RadiobuttonTableCellEditor extends DefaultCellEditor
implements ItemListener {
JRadioButton rb = new JRadioButton();
public RadiobuttonTableCellEditor(JCheckBox pCheckBox) {
super(pCheckBox);
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (value == null)
return null;
rb.addItemListener(this);
rb.setSelected((Boolean)value);
return rb;
}
public void itemStateChanged(ItemEvent e) {
super.fireEditingStopped();
}
public Object getCellEditorValue() {
rb.removeItemListener(this);
return rb.isSelected();
}
}
Danke für Ihre Hilfe Ich habe eine Member-Deklaration der JTable hinzugefügt, die ich referenziere, wenn ich getTableCellEditorComponent aufruft. Dann gut getCellEditorValue heißt I-Zustand. \t \t if (! Table = null) { \t \t \t ((Abstract) table.getModel()) fireTableDataChanged(); \t \t} –
Obwohl es wahrscheinlich funktioniert, ist Ihr Ansatz nicht korrekt. Sie sollten die fireXXX-Methoden im Tabellenmodell als Reaktion auf das Ändern von DATA aufrufen.In keinem Fall sollten Sie dies im Renderer oder Editor tun. Die Idee ist einfach. Ihr Editor speichert mit der model.setValueAt-Methode einen neuen Wert im Modell. Dann sollte das Modell alle interessierten Parteien wissen lassen, dass sich die Daten geändert haben. Ihre Renderer und Editoren reagieren auf Änderungen automatisch. –