【问题标题】:Designing simple cell renderer for Nimbus look and feel为 Nimbus 外观设计简单的单元格渲染器
【发布时间】: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


    【解决方案1】:

    如果没问题,您的第一段代码。我认为您必须使用 UIManager.getColor("Table.alternateRowColor") 替代行,否则使用 table.getBackground()。对于选定的行,使用 table.getSelectionBackground()。所以你的代码可能看起来像

    if (isSelected) {
        setBackground(table.getSelectionBackground());
    }
    else {
        if ( row % 2 == 0 ) {
           setBackground(UIManager.getColor("Table.alternateRowColor"));
        } else { 
           setBackground(table.getBackground());
        }
    }
    

    不要忘记确保您的面板是不透明的并且标签是透明的。

    这里是 Nimbus UI 默认值的一个很好的链接: http://www.duncanjauncey.com/java/ui/uimanager/UIDefaults_Java1.6.0_11_Windows_2000_5.0_Nimbus.html

    【讨论】:

    • 是的 - 这正是我尝试过的完全,但没有成功。但是,我实际上使用的是 Scala,而不是 Java,所以我决定用 Java 编写一个快速的测试用例,它确实有效。那谢谢啦。不幸的是,我不知道为什么它在 Scala 中不起作用!
    • 尽管我对 Scala 了解不多,但我看不出它为什么不能工作的原因。 Swing 就是 Swing,即使在 Scala 中也是如此。
    • 确实是if ( row % 2 == 1 ) {
    • 取决于你认为哪一行是备用的;)
    猜你喜欢
    • 2013-04-09
    • 2010-11-22
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2011-10-02
    • 2018-08-26
    • 2018-02-13
    • 2018-10-15
    相关资源
    最近更新 更多