如何使特定的jTable布尔列可编辑

时间:2014-01-20 19:15:01

标签: java swing jtable defaulttablemodel

我有一个方法返回由数据库填充的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实例兼容?对此的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您可以在不编写自定义渲染器/编辑器的情况下使用CheckBox列,只需覆盖getColumnClass()的{​​{1}}方法。以下是使用CheckBox列的简单示例:

TableModel
相关问题