【发布时间】:2010-11-22 09:07:49
【问题描述】:
我有一个简单的单元格渲染器,它由几个JLabels(渲染器本身扩展JPanel)组成,我试图让它在 Nimbus 的外观和感觉中合理地渲染。基本上发生的事情是在 lighter 行中(因为 Nimbus 有 alternate row coloring),我的特定单元格渲染器正在使用表格背景颜色(比两者都暗得多row 颜色)。在我的渲染器中,我这样做:
if (isSelected) {
setBackground(table.getSelectionBackground);
}
else {
setBackground(table.getBackground);
}
如果我将整个代码块注释掉,那么我所有的行都是较暗的 row 颜色(不是表格背景,但也不是替代颜色)。我不确定我什至不明白会发生什么!上面的 sn-p 代码是如何产生具有不同背景颜色的单元格的? table.getBackground 在我的方法调用之间是否会改变颜色?
我尝试过使用这个 sn-p 的代码:
Color alternateColor = sun.swing.DefaultLookup.getColor(
peer,
peer.getUI,
"Table.alternateRowColor");
if (alternateColor != null && row % 2 == 0)
setBackground(alternateColor);
在DefaultTableCellRenderer 类中。而且它似乎根本没有任何影响。有没有人使用 Nimbus 定制单元格渲染器?
编辑:如果有人感兴趣,结果证明这是 Scala 表格单元格渲染器的问题,因为我实际上使用的是 Scala,而不是 Java。下面接受的答案在 Java 程序中工作得很好。单独的问题提交here。
【问题讨论】:
标签: java swing look-and-feel nimbus tablecellrenderer