我在 JTable 中有一个列,其中的单元格呈现为下面的复选框:
如何防止复选框在每次单击时移动?这是我的单元格渲染器和单元格编辑器:
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();
}
}
谢谢!
最佳答案
不要创建自定义渲染器/编辑器。
JTable 已经支持默认渲染器。只需重写 TableModel 或 JTable 的 getColumnClass(...) 方法即可返回第一列的 Boolean.class,JTable 将使用默认渲染器/编辑器。
关于java - 防止复选框在 JTable 中移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811471/