问题描述:尽管实现了"getColumnClass",但JTable仍显示true/false而不是CheckBox。
解决方案: 在JTable中显示CheckBox而不是true/false值,需要进行以下步骤:
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex == yourCheckBoxColumnIndex) {
return Boolean.class;
} else {
return super.getColumnClass(columnIndex);
}
}
class CheckBoxRenderer extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L;
public CheckBoxRenderer() {
super();
setHorizontalAlignment(JLabel.CENTER); // 居中显示CheckBox
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
JCheckBox checkBox = new JCheckBox();
checkBox.setSelected((boolean) value); // 设置CheckBox选中状态
return checkBox;
}
}
class CheckBoxEditor extends DefaultCellEditor {
private static final long serialVersionUID = 1L;
public CheckBoxEditor() {
super(new JCheckBox());
}
}
JTable table = new JTable(model);
table.getColumnModel().getColumn(yourCheckBoxColumnIndex).setCellRenderer(new CheckBoxRenderer());
// 如果需要允许编辑CheckBox,取消下面注释
// table.getColumnModel().getColumn(yourCheckBoxColumnIndex).setCellEditor(new CheckBoxEditor());
以上步骤可以实现在JTable中显示CheckBox而不是true/false值。根据你的实际情况,将yourCheckBoxColumnIndex
替换为需要显示CheckBox的列的索引。
关于腾讯云相关产品的介绍和推荐链接,可以参考腾讯云官方文档进行了解和选择,具体地址如下:
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云