我有一个方法返回由数据库填充的DefaultTableModel。我想要做的是通过向返回的DefaultTableModel实例添加一个新的布尔列,为每个返回的记录添加布尔复选框。用户应该只能单击/取消选中这些复选框(应该允许多个选择)来操作GUI中的一些地图对象。其他列应该是不可编辑的。关于如何实现这一点的任何想法?到目前为止,我已经达到了以下几点,我已经扩展了TableCellRenderer,如下所示
public class UGIS_BooleanTableCellRenderer extends JCheckBox implements TableCellRenderer {
public UGIS_BooleanTableCellRenderer() {
setHorizontalAlignment(JLabel.CENTER);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setSelected((value != null && ((Boolean) value).booleanValue()));
return this;
}
}
我也可以覆盖isCellEditable方法。
DefaultTableModel dm = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
return column == 3;
}
};
但是如何使该方法返回的DefaultTableModel与我的覆盖dm实例兼容?对此的任何帮助将不胜感激。
答案 0 :(得分:3)
您可以在不编写自定义渲染器/编辑器的情况下使用CheckBox列,只需覆盖getColumnClass()
的{{1}}方法。以下是使用CheckBox列的简单示例:
TableModel