如何使JTable列包含复选框?
-
04-10-2019 - |
题
序言:我对Java感到恐惧,而Java UI组件更糟。
我发现了几个有关如何在桌子中添加按钮的不同教程,但是我正在努力添加复选框。我需要有一列绘制默认情况下的文本框(我认为可以处理的单元格渲染器),然后在单击“ tickbox”上,解开框,Redraws说框,然后在我可以跟踪的某个地方开火。
目前,我有一个自定义的cellrender:
public class GraphButtonCellRenderer extends JCheckBox implements TableCellRenderer {
public GraphButtonCellRenderer() {
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(isSelected)
setSelected(true);
else
setSelected(false);
setMargin(new Insets(0, 16, 0, 0));
setIconTextGap(0);
setBackground(new Color(255,255,255,0));
return this;
}}
目前可以处理绘制tick框,但如果选择该行,则只能将框并解开框。但是我不知道如何处理这些事件。实际上,我要问的可能是指向如何干净地添加复选框的良好教程的链接。任何助攻都将不胜感激:)
解决方案
无需创建自己的表渲染器。 这是一个更简单的示例. 。只需创建一个自定义表模型,对于给定的列,请返回类布尔值:
public Class getColumnClass(int column)
如果您希望该列是可编辑的,请返回true
public boolean isCellEditable(int row, int column)
JTable为您照顾渲染。
其他提示
正如彼得所说,使用扩展DefaultTableModel类,例如:Ex:
class NewTableModel extends DefaultTableModel{
public Class<?> getColumnClass(int columnIndex) {
return getValueAt(0, columnIndex).getClass();
}
}
最简单的解决方案是使用DefaultTableModel并将Boolean对象用作值。
在秋千设计器集合列类型中
不隶属于 StackOverflow