我使用JXTreeTable
fromorg.jdesktop.swingx
来显示层次结构数据,所以我有一些父节点和一些附加到它们的子节点。我想要的是renderer
对父节点和子节点有所不同。
示例:如果 JXTreeTable 显示父节点,则第一列应呈现为字符串,其他列使用 JCheckBox 否则,如果 JXTreeTable 显示子节点,则每个单元格都应呈现为字符串。
首先,我在 myTreeTableModel 中编写扩展了AbstractTreeTableModel
这段代码:
@Override
public Class<?> getColumnClass(int column) {
if (column == 0)
return String.class;
return Boolean.class;
}
父节点中的一切都很好,但是即使在我想要一个空白单元格的子节点中,这也会显示一个空的 JCheckBox。返回null
方法getValueAt(....)
并不能解决问题。所以,我想使用 Renderer 类,但我不知道从哪里开始。我写了一个这样的伪渲染器:
private class CustomCellRender implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus, int row,
int column) {
setOpaque(true);
JComponent component = null;
if (value instanceof Parent_Node) {
if (column == 0)
component = new JLabel();
else
component = new JCheckBox();
} else if (value instanceof Child_Node) {
component = new JLabel();
}
return component;
}
}
我将其设置为:
myTreeTable.setDefaultRenderer(Object.class, new CustomCellRender());
谁能告诉我哪里错了或者给我一些解决这个问题的提示?感谢您的时间。
编辑:我试图System.out.println(...)
在方法中插入一个测试,getTableCellRendererComponent
但它从未被调用。所以 JTreeTable 从不运行这个方法。