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)));
在这个实现中,最后一行/第一列将显示为空。您应该对照表检查行数,而不是模型,以防表被过滤。否则,一个好答案=)