1

我想创建一个Tree多列。我在这里找到了这个教程(德语)和这个答案(英语)。我想在一列中添加复选框,但我不知道该怎么做。当我将复选框返回到JTreeTable时,执行中显示的内容是复选框详细信息而不是复选框对象。我怎样才能得到这样的东西如下图所示?

像那样

4

1 回答 1

2

如在此引用的以新的 Swing 树表进行旋转中所示,您的实现RowModel必须返回正确的类型 fromgetColumnClass()和正确的值 from getValueFor()。type 的值Boolean.class将使用JCheckBox. 以下实现产生引用的图像:

图片

@Override
public Class getColumnClass(int column) {
    switch (column) {
        case 0:
            return Date.class;
        case 1:
            return Long.class;
        case 2:
            return Boolean.class;
        case 3:
            return Boolean.class;
        case 4:
            return Boolean.class;
        default:
            assert false;
    }
    return null;
}

@Override
public Object getValueFor(Object node, int column) {
    File f = (File) node;
    switch (column) {
        case 0:
            return new Date(f.lastModified());
        case 1:
            return f.length();
        case 2:
            return f.canRead();
        case 3:
            return f.canWrite();
        case 4:
            return f.canExecute();
        default:
            assert false;
    }
    return null;
}

我无法选择复选框。

您需要返回所需列的实现并相应地更新true您的实现。当单元格编辑器结束时,将调用您的实现,因此请验证它是否更新了稍后将返回的相同值。或者,您需要使用API中规定的方案来实现管理列表的方法;源代码就是一个很好的例子。isCellEditable()nodesetValueFor()setValueFor()getValueFor()TreeModelTreeModelListenerEventListenerListDefaultTreeModel

于 2016-04-07T14:18:47.260 回答