带有DefaultTableCellrenderer和备用条纹荧光笔的JXTable

时间:2011-05-27 09:57:22

标签: java swingx jxtable

我更新到SwingX-1.6.2,但发现1.6中没有出现的问题。 JXTable单元格的颜色看起来很奇怪。我使用荧光笔和替代条纹(HighlighterFactory.createAlternateStriping)作为颜色,使用DefaultTableCellRenderer的子类来设置文本,字体,......

从1.6.1开始,如果设置了自定义单元格渲染器,则似乎忽略了突出显示器的颜色。文档说有一个hack,但它不起作用。

有人为此解决了问题吗?

3 个答案:

答案 0 :(得分:3)

对于SwingX中的自定义单元格渲染,

  • never-ever子类xxRenderer
  • never-ever子类JXTable(也不是JXList,JXTree / Table)

相反

  • 实现/使用StringValue配置“内容”方面,如文本,图标..
  • 使用/实现荧光笔配置“视觉”方面,如颜色,字体,画家
  • 如果需要条件视觉装饰,请实施/使用HighlightPredicate并使用它配置荧光笔
  • 使用StringValue和/或Highlighter
  • 配置xxRenderer

修改

如果需要不支持的渲染组件类型,那么要实现ComponentProvider。这有点工作,因为提供者必须履行严格的合同(比如重置保证的属性值,尊重StringValue,...请参阅api doc)但是每个组件类型只需要一次。完成后,可以在所有类型的集合组件中使用相同的提供程序(列表JXList,JXComboBox,JXTree / Table)

答案 1 :(得分:0)

我不知道JXTable如何突出显示,但你总是可以自己做。请参阅Table Row Renderering

答案 2 :(得分:0)

我无法在SSCCE中重现该问题,但是在我(非常复杂)的应用程序中,我通过使用从SwingX的DefaultTableRenderer而不是java的DefaultTableCellRenderer继承的渲染器来解决它。 / p>