我更新到 SwingX-1.6.2 但发现了 1.6 中没有出现的问题。 JXTable 单元格的颜色看起来很奇怪。我使用带有备用条纹 (HighlighterFactory.createAlternateStriping) 的荧光笔来设置颜色,并使用 DefaultTableCellRenderer 的子类来设置文本、字体...
从 1.6.1 开始,如果设置了自定义单元格渲染器,荧光笔的颜色似乎会被忽略。文档说有一个 hack,但它不起作用。
有人解决这个问题吗?
最佳答案
对于 SwingX 中的自定义单元格呈现,
- 永不子类 xxRenderer
- 永不继承 JXTable(也不是 JXList、JXTree/Table)
代替
- 实现/使用 StringValue 来配置“内容”方面,如文本、图标 ..
- 使用/实现 Highlighter 来配置“视觉”方面,如颜色、字体、画家
- 如果需要有条件的视觉装饰,实现/使用 HighlightPredicate 并用它配置 Highlighter
- 使用 StringValue 和/或 Highlighter 配置 xxRenderer
编辑:
如果需要不支持的渲染组件类型,方法是实现一个 ComponentProvider。这有点麻烦,因为提供者必须履行严格的契约(Contract)(比如重置保证的属性值,尊重 StringValue,......请参阅 api 文档)但每个组件类型只需要一次。完成后,可以在所有类型的集合组件(列表 JXList、JXComboBox、JXTree/Table)中使用相同的提供者
关于java - 带有 DefaultTableCellrenderer 和备用 strip 荧光笔的 JXTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150618/