Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带有DefaultTableCellrenderer和备用条带高亮显示的JXTable_Java_Swingx_Jxtable - Fatal编程技术网

Java 带有DefaultTableCellrenderer和备用条带高亮显示的JXTable

Java 带有DefaultTableCellrenderer和备用条带高亮显示的JXTable,java,swingx,jxtable,Java,Swingx,Jxtable,我更新到SwingX-1.6.2,但发现了1.6中没有出现的问题。JXTable单元格的颜色看起来很奇怪。我使用带备用条带(HighlighterFactory.createAlternateStriping)的荧光灯作为颜色,使用DefaultTableCellRenderer的子类作为设置文本、字体等 从1.6.1开始,如果设置了自定义单元渲染器,则荧光灯的颜色似乎被忽略。文件上说有黑客攻击,但不起作用 有人能解决这个问题吗?我不知道JXTable是如何突出显示的,但你可以自己做。请参阅。我

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

从1.6.1开始,如果设置了自定义单元渲染器,则荧光灯的颜色似乎被忽略。文件上说有黑客攻击,但不起作用


有人能解决这个问题吗?

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

我无法在SSCCE中重现该问题,但在我(非常复杂)的应用程序中,我通过使用继承自SwingX而非java的渲染器解决了该问题。

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

  • 从来没有子类
  • 永远不要子类化JXTable(也不要子类化JXList、JXTree/Table)
反而

  • 实现/使用StringValue配置“内容”方面,如文本、图标
  • 使用/实现Highlighter来配置“视觉”方面,如颜色、字体、颜色
  • 如果需要条件视觉装饰,则实现/使用HighlightPredicate并使用它配置Highlighter
  • 使用StringValue和/或Highlighter配置渲染器
编辑:


如果需要不受支持的呈现组件类型,那么方法是实现ComponentProvider。这是一点工作,因为提供者必须履行严格的合同(比如重置保证的属性值,尊重StringValue,…参见api文档),但每个组件类型只需要一次。完成后,同一个提供程序可用于所有类型的集合组件(列表JXList、JXCOMBOX、JXTree/Table)

+1这听起来很有趣,您能将我们链接到您所参考的资源吗?甚至给我们工作的机会?事实上。。。否;-)在SwingX ContextNon中这样做是错误的,在SwingX中从来没有子类xxRenderer(我们可能也应该将它们设置为final;-),它们只不过是遗留的Gluer。如果JXTable的函数与JTable完全不同,那么您可能应该为它创建一个新类,而不是扩展JTable。继承只应该扩展行为,而不应该限制它?这是一个非常有效的扩展,因为它大大增强了核心功能。如果您不想学习如何使用增强功能,请随意使用普通JTable。注意:核心默认表呈现器的子类不太好,因为核心实现是BROKENStephan的重点是它违反了Liskov替换原则。(但是Java集合类也是如此。)好的,但是在不扩展渲染器的情况下,如何使用诸如复选框、单选按钮或组合框之类的自定义渲染器呢?