java - 带有 DefaultTableCellrenderer 和备用 strip 荧光笔的 JXTable

标签 java swingx jxtable

我更新到 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/

相关文章:

Java ArrayIndexOutOfBounds 异常

java - 使用 SwingX 对 JXTable 进行排序

java - 从列控件弹出菜单中删除列

java - JTable 或 JXTable 中的列分隔符

java - 更改 Hadoop 上随机数据生成的大小

java - 比较Java中的两个POJO对象并显示差异

Java - 计算面积,如果面积> 1000且形状=绿色,则打印形状列表

java - 是否有允许可变行高的 JTreeTable 实现

java - FileWriter 不会追加新行

java - 如何使 JTextarea 中的特定文本不可编辑