Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JXTreeTable中的渲染器单元,位于java中行内容的基础上_Java_Swing_Tablecellrenderer_Jxtreetable - Fatal编程技术网

JXTreeTable中的渲染器单元,位于java中行内容的基础上

JXTreeTable中的渲染器单元,位于java中行内容的基础上,java,swing,tablecellrenderer,jxtreetable,Java,Swing,Tablecellrenderer,Jxtreetable,我使用org.jdesktop.swingx中的JXTreeTable来显示层次结构数据,因此我有一些父节点和一些子节点连接到它们。 我想要的是为父节点和子节点提供不同的渲染器 示例:如果JXTreeTable显示父节点,则第一列应显示为字符串,其他列应显示为JCheckBox;否则,如果JXTreeTable显示子节点,则每个单元格应显示为字符串 首先,我在myTreeTableModel中编写,它扩展了AbstractTreeTableModel这段代码: @Override public

我使用
org.jdesktop.swingx
中的
JXTreeTable
来显示层次结构数据,因此我有一些父节点和一些子节点连接到它们。 我想要的是为父节点和子节点提供不同的
渲染器

示例:如果JXTreeTable显示父节点,则第一列应显示为字符串,其他列应显示为JCheckBox;否则,如果JXTreeTable显示子节点,则每个单元格应显示为字符串

首先,我在myTreeTableModel中编写,它扩展了
AbstractTreeTableModel
这段代码:

@Override
public Class<?> getColumnClass(int column) {
    if (column == 0)
        return String.class;
    return Boolean.class;
}
我将其设置为:

myTreeTable.setDefaultRenderer(Object.class, new CustomCellRender());
谁能告诉我哪里错了,或者给我一些解决这个问题的建议?谢谢你抽出时间


EDIT:我试图在方法
gettableCellRenderComponent
中插入一个测试
System.out.println(…)
,但从未调用它。因此JTreeTable从不运行此方法。

GetTableCellRenderComponent()
中,我认为您需要配置该组件,因此它必须是
new JLabel(value.toString())
之类的。此外,出于性能原因,您应该重用渲染器组件(JCheckBox,JLabel)通过在
getTableCellRenderComponent()
中TableCellRenderComponent的构造函数中创建它们(每个不同的呈现逻辑使用一个实例),我认为您需要配置该组件,因此它必须是
new JLabel(value.toString())
之类的。此外,出于性能原因,您应该重用呈现程序组件(JCheckBox,JLabel)通过在TableCellRenderer的构造函数中创建它们(每个不同的呈现逻辑使用1个实例)
myTreeTable.setDefaultRenderer(Object.class, new CustomCellRender());