将JCheckBox添加到除最后一个单元格之外的列中的所有单元格

时间:2012-06-21 17:53:45

标签: java jtable jcheckbox

在我的表模型中,我在Boolean.class中返回getColumnClass,以便在第一列中显示复选框。是否可以向第一列中除最后一个单元格(在“总计”旁边)之外的所有单元格添加复选框?见截图。谢谢!

enter image description here

1 个答案:

答案 0 :(得分:2)

当然,你只需要实现一个TableCellRenderer,它在渲染最后一行&&时返回null。第一列像这样:

public class CustomTableCellRenderer implements TableCellRenderer {

    private final TableCellRenderer decorate;

    public CustomTableCellRenderer(final TableCellRenderer decorate) {
        super();
        this.decorate = decorate;
    }

    public Component getTableCellRendererComponent(final JTable table, final Object value,
            final boolean isSelected, final boolean hasFocus, final int row, final int column) {
        if (column == 0 && row == table.getRowCount() - 1) {
            return null;
        }
        return decorate.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
    }
}

现在您需要使用此实现的实例设置布尔单元格的CellRenderer,如:

    TableColumn column = table.getColumnModel().getColumn(0);
    column.setCellRenderer(new CustomTableCellRenderer(table.getDefaultRenderer(Boolean.class)));

通过此实现,最后一行/第一列将显示为空。