0

如何为 JXTreeTable 中的不同列分配不同的渲染器。JXtreeTable 具有不同的列类型(如货币、日期等)。在 JXTable 中,我使用了 getColumn(identifier).setCellRender(TableCellRender) 方法。我应该为 JXTreeTable 做什么?

4

1 回答 1

0

只要要平等处理相同类型的所有列,您就可以按类分配默认渲染器。例如,您的表有两列带有 java.util.Date 值,并且您希望它们都以相同的方式处理:

myTreeTable.setDefaultRenderer(java.util.Date.class, new DefaultTableRenderer(StringValues.DATE_TO_STRING));

第一个参数是您希望此渲染器处理的对象类型。第二个参数是单元格渲染器。SwingX 带有一个非常简单的渲染机制,称为 DefaultTableRenderer。它需要许多可能的参数,但最简单的一个是提供一个StringValue实例。这是一个接口,当实现时,它接受一个任意对象并以某种方式将其转换为字符串。StringValues 类包含一些预定义的实现。在上面的示例中,我使用了 StringValues.DATE_TO_STRING,它将单元格中的 java.util.Date 对象传递给默认的 DateFormat 实例并返回 String 结果。对于您要处理的所有对象类别,继续这样操作。

如果您只需要对单个列进行特定渲染,则只需将该列插入调用中间:

myTreeTable.getColumnExt(myColumnIdentifier).setCellRenderer(java.util.Date.class, new DefaultTableRenderer(myGloriousStringValueConverter));

请注意,调用不再是setDefaultCellRenderer

这种渲染机制是 SwingX 的最佳特性之一。易于使用且与荧光笔管道相结合非常有效。

所有这些都适用于 JXTreeTable 的表部分。分层列(第一列)可以以相同的方式设置,只是调用是

myTreeTable.setTreeCellRenderer(new DefaultTreeRenderer(myGloriousStringValue));
于 2014-07-02T10:06:19.537 回答