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());