Verhindern, dass Kontrollkästchen in einem JTabell bewegt werden
Frage
Ich habe eine Spalte in einem JTabell mit Zellen, die als Kontrollkästchen unten gerendert werden:
Wie verhindern Sie, dass sich die Kontrollkästchen jedes Mal bewegen, wenn ich darauf klicke? Hier ist mein Zell -Renderer und mein Zellredakteur:
protected class CheckBoxCellRenderer extends JCheckBox implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
this.setSelected((Boolean) tableModel.getValueAt(row, 0));
return this;
}
}
protected class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
private final CheckBoxCellRenderer cell = new CheckBoxCellRenderer();
private int row;
public CheckBoxCellEditor() {
cell.addActionListener(this);
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int rowIndex, int vColIndex) {
cell.setSelected(((Boolean) value).booleanValue());
row = rowIndex;
return cell;
}
@Override
public Object getCellEditorValue() {
return cell.isSelected();
}
}
Vielen Dank!
Lösung
Erstellen Sie keinen benutzerdefinierten Renderer/Editor.
JTable unterstützt bereits einen Standard -Renderer. Überschreiben Sie einfach die Methode GetColumnClass (...) des Tablemodel oder JTabels, um boolean.class für die erste Spalte zurückzugeben, und der JTabelle verwendet den Standard -Renderer/Editor.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow