【问题标题】:How can I add checkbox in tree table如何在树表中添加复选框
【发布时间】:2016-04-07 09:28:23
【问题描述】:

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

【问题讨论】:

  • 对于JTable 单元格的boolean 数据,是否默认显示JCheckBox
  • 对于exampleexample 和我个人而言,我会使用来自 SwingX 的 JXTreeTable,它只是一个更好的实现,它将为您提供完成这项工作所需的控制
  • 谢谢,我不想让 Jtrees 里面的复选框,我想做的是在树之外的列中。

标签: java swing multiple-columns jtree jtreetable


【解决方案1】:

Taking the New Swing Tree Table for a Spin所示,引用here,你的RowModel实现必须从getColumnClass()返回正确的类型,从getValueFor()返回正确的值。 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;
}

我无法选择复选框。

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

【讨论】:

  • 谢谢,我在表格中添加复选框成功,看来我不需要创建新的 JCheckbox 对象,它使用默认的 JCheckbox,我可以使用我的自定义复选框吗?
  • 我无法选择复选框
  • 引用的示例使用File,其实例是不可变的;我已经在上面详细阐述了处理可变数据的一般方法。
  • 我可以使用我的自定义复选框吗?默认是 JCheckbox
  • 是的;使用setDefaultEditor();如果您对此主题提出新问题,请在此处联系我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多