如何为JXTreeTable中的不同列分配不同的渲染器。JXtreeTable有不同的列类型(如currency、date、...etc)。在JXTable中,我使用了getColumn(identifier).setCellRender(TableCellRender)方法。我应该怎么做才能拿到JXTreeTable?
发布于 2014-07-02 18:06:20
只要相同类型的所有列都是平等处理的,您就可以按类分配一个默认的渲染器。例如,您的表有两列具有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实例,并返回字符串结果。对于要处理的所有对象类,都要这样操作。
如果您只需要对单个列进行特定呈现,则只需将该列插入调用的中间:
myTreeTable.getColumnExt(myColumnIdentifier).setCellRenderer(java.util.Date.class, new DefaultTableRenderer(myGloriousStringValueConverter));请注意,调用不再是对setDefaultCellRenderer.的调用
这种呈现机制是SwingX最好的特性之一。易于使用,与荧光笔流水线结合使用非常有效。
所有这些都适用于JXTreeTable的表部分。层次结构列(第一列)可以用相同的方式设置,只是调用
myTreeTable.setTreeCellRenderer(new DefaultTreeRenderer(myGloriousStringValue));https://stackoverflow.com/questions/24440125
复制相似问题