Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JCheckbox添加到列中除最后一个单元格外的所有单元格_Java_Jtable_Jcheckbox - Fatal编程技术网

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

Java 将JCheckbox添加到列中除最后一个单元格外的所有单元格,java,jtable,jcheckbox,Java,Jtable,Jcheckbox,在我的表模型中,我在getColumnClass中返回Boolean.class,以便在第一列中显示复选框。是否可以将复选框添加到除最后一个单元格(位于“总计”旁边)之外的第一列中的所有单元格?见截图。谢谢 当然,您只需要实现一个TableCellRenderer,在呈现最后一行和第一列时返回null,如下所示: public class CustomTableCellRenderer implements TableCellRenderer { private final Table

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


当然,您只需要实现一个
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)));

在这个实现中,最后一行/第一列将显示为空。

您应该对照表检查行数,而不是模型,以防表被过滤。否则,一个好答案=)