如何在 Java Swing 应用程序中正确设置 JTable 单元格内的可编辑复选框?
How to properly set editable checkbox inside a JTable cell in Java Swing application?
我有一个 JTable,其中有几个 JCheckBox。我正在从数据库中初始化 JCheckBoxes 和其他单元格值。我的问题是,当我单击 JCheckBox 以选中或取消选中时,它们什么都不做。
当我单击两次时,可编辑的 JTable 单元格变为活动状态并显示 JCheckBox 的值为 0 或 1。我可以使用 0 或 1 编辑单元格,当我保存时,它会保存记录并加载复选框具有编辑值。
以下代码片段展示了我是如何加载和创建 JCheckBoxes 的:
class TextBoxNewCellRenderer extends JPanel implements TableCellRenderer {
:::
public Component getTableCellRendererComponent(
case 10: //Active
switch (column) {
case 0:
this.add(lblStar);
this.add(new JLabel(value.toString(), JLabel.LEFT));
break;
case 1:
checkBox = new JCheckBox();
checkBox.setToolTipText("Set 0 OR 1");
checkBox.setEnabled(true);
if(value.toString().equals("1"))
checkBox.setSelected(true);
if(value.toString().equals("0"))
checkBox.setSelected(false);
this.add(checkBox);
break;
:::
return this;
}
}
在我的 renderTable 方法中,我覆盖了以下 isCellEditable:
DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
switch (row){
case 10: //Active
switch (column) {
case 0:
return false;
case 1:
return true;
case 2:
return false;
case 3:
return false;
default:
return false;
}
default:
return false;
}
}
};
这是我双击 JCheckBoxe 时的 JTable 图片:
我是否可以一键选中或取消选中 JCheckBoxes?我不想用 0 或 1 更新 JTable 单元格以便选中或取消选中。请帮助。
干杯。
When I clicked twice, the editable JTable cell become active and shows the value of JCheckBox which is 0 OR 1.
如果你想使用默认的 renderer/editor 那么你应该在 TableModel
.
中存储 Boolean.TRUE
或 Boolean.FALSE
那么你还需要将TableModel
的getColumnClass()
方法重写为return Boolean.class
.
阅读有关 How to Use Tables 的 Swing 教程部分,了解更多信息和工作示例。
我有一个 JTable,其中有几个 JCheckBox。我正在从数据库中初始化 JCheckBoxes 和其他单元格值。我的问题是,当我单击 JCheckBox 以选中或取消选中时,它们什么都不做。
当我单击两次时,可编辑的 JTable 单元格变为活动状态并显示 JCheckBox 的值为 0 或 1。我可以使用 0 或 1 编辑单元格,当我保存时,它会保存记录并加载复选框具有编辑值。
以下代码片段展示了我是如何加载和创建 JCheckBoxes 的:
class TextBoxNewCellRenderer extends JPanel implements TableCellRenderer {
:::
public Component getTableCellRendererComponent(
case 10: //Active
switch (column) {
case 0:
this.add(lblStar);
this.add(new JLabel(value.toString(), JLabel.LEFT));
break;
case 1:
checkBox = new JCheckBox();
checkBox.setToolTipText("Set 0 OR 1");
checkBox.setEnabled(true);
if(value.toString().equals("1"))
checkBox.setSelected(true);
if(value.toString().equals("0"))
checkBox.setSelected(false);
this.add(checkBox);
break;
:::
return this;
}
}
在我的 renderTable 方法中,我覆盖了以下 isCellEditable:
DefaultTableModel model = new DefaultTableModel() {
@Override
public boolean isCellEditable(int row, int column) {
switch (row){
case 10: //Active
switch (column) {
case 0:
return false;
case 1:
return true;
case 2:
return false;
case 3:
return false;
default:
return false;
}
default:
return false;
}
}
};
这是我双击 JCheckBoxe 时的 JTable 图片:
我是否可以一键选中或取消选中 JCheckBoxes?我不想用 0 或 1 更新 JTable 单元格以便选中或取消选中。请帮助。
干杯。
When I clicked twice, the editable JTable cell become active and shows the value of JCheckBox which is 0 OR 1.
如果你想使用默认的 renderer/editor 那么你应该在 TableModel
.
Boolean.TRUE
或 Boolean.FALSE
那么你还需要将TableModel
的getColumnClass()
方法重写为return Boolean.class
.
阅读有关 How to Use Tables 的 Swing 教程部分,了解更多信息和工作示例。