如何在树表中添加复选框

时间:2016-04-07 09:28:23

标签: java swing multiple-columns jtree jtreetable

我想创建一个包含多列的Tree。我找到了这个教程here(德语)和这个answer(英语)。我想在一列中添加复选框,但我不知道该怎么做。当我向JTreeTable返回一个复选框时,执行中显示的内容是复选框详细信息而不是复选框对象。如何获得this之类的内容,如下图所示?

like that

1 个答案:

答案 0 :(得分:2)

Taking the New Swing Tree Table for a Spin 所示,引用hereRowModel的实施必须从getColumnClass()返回正确的类型,并从getValueFor()。类型Boolean.class的值将使用JCheckBox呈现。以下实现产生引用的图像:

image

@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的实施中针对所需的列返回isCellEditable(),并相应地更新node实施中的setValueFor()。当单元格编辑器结束时,将调用setValueFor()的实现,因此请验证它是否更新了稍后由getValueFor()返回的相同的值。 (可选)您需要使用EventListenerList API中规定的方案实施管理TreeModel列表的TreeModelListener方法; DefaultTreeModel来源code就是一个很好的例子。