序言:我对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();
        }
    }

这是一个 简单的 相当复杂 例子 用一个 TableCellRendererTableCellEditor. 。也可以看看, 概念:编辑和渲染器.

附录:@Jay Askren的观点非常好。默认渲染器 Boolean.class, ,如教程中所述,您可能需要全部。

最简单的解决方案是使用DefaultTableModel并将Boolean对象用作值。

在秋千设计器集合列类型中

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top