雨云和备用行颜色

雨云和备用行颜色,第1张

雨云和备用行颜色

似乎是几个错误的干扰…

为了同时更改默认表背景和默认条带化,UIManager的预期配置(不仅是您的,也是我的)(对于所有遵循alternateRow属性的LAF都是相同的):

UIManager.put("Table.background", Color.RED);UIManager.put("Table.alternateRowColor", Color.PINK);

对metal和Nimbus均无效

  • 金属色:无条纹,桌子全红色
  • 在雨云中:条纹白色/粉红色,即表格背景被忽略

可以在DefaultTableCellRenderer中找到第一个的根本原因:

Color background = unselectedBackground != null  ? unselectedBackground  : table.getBackground();if (background == null || background instanceof javax.swing.plaf.UIResource) {    Color alternateColor = DefaultLookup.getColor(this, ui, "Table.alternateRowColor");    if (alternateColor != null && row % 2 != 0) {        background = alternateColor;    }}

它的逻辑是歪曲的:仅当 表格 的背景是​​colorUIResource 时才采用替代颜色,这是一个相当微弱的区别。无论如何,它引导我们进行下一个尝试:

UIManager.put("Table.background", new ColorUIResource(Color.RED));UIManager.put("Table.alternateRowColor", Color.PINK);

对于金属来说,这看起来不错(除了复选框渲染器的典型问题,但这是另一个错误故事;-),对于Nimbus来说仍然没有运气。

下一步是查找可能相关的Nimbus默认值,并应用(在设置LAF之后!):

UIManager.getLookAndFeelDefaults().put("Table:"Table.cellRenderer".background",     new ColorUIResource(Color.RED));

编辑 (按照评论的要求)

JXTable试图完全避开该问题-
它的剥离方法是从HighlighterFactory中检索到的Highlighter。需要通过从lookAndFeelDefaults中删除AlternativeRowColor属性并使用新的键“
UIColorHighlighter.stripingBackground”添加它来使Nimbus变得肮脏



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5429374.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存