Swing:Nimbus L& F禁用组合框背景色

时间:2013-01-22 11:51:24

标签: swing look-and-feel nimbus

我已经搜索了几天的答案并阅读了很多关于LookAndFeels和opaque-issue的内容,但找不到解决方案。我正在使用NimbusLookAndFeel开发一个带有Swing的Java应用程序。我对整体看起来很满意,但还是想修改一个视图的东西。现在我卡住了,因为不知何故我无法设置禁用的JCombobox的背景颜色(combobox.setEnabled(false);)

我已经尝试过使用UIManager.put(..)等许多不同的属性+许多其他东西。

如果我使用其他L& F这样的作品:

combobox.setRenderer(new DefaultListCellRenderer() {
            @Override
            public void paint(Graphics g) {
                setBackground(Color.WHITE);
                setForeground(Color.BLACK);
                super.paint(g);
            }               
});

有关如何使用Nimbus进行此操作的任何建议吗?

1 个答案:

答案 0 :(得分:0)

我玩弄了Nimbus的默认设置。修改大多数组件没有问题,但我无法用它更改任何禁用组件的背景。

我最终写了一个像这样的自定义ListCellRenderer

public class DisabledListCellRenderer extends DefaultListCellRenderer {
    private static final long serialVersionUID = 1L;
    private JComponent component;

    public DisabledListCellRenderer(JComponent component) {
        this.component = component;
    }

    @Override
    protected void paintComponent(Graphics g) {
        g.setColor(SwingHelper.disabledBackgroundColor);
        g.fillRect(0, 0, component.getSize().width, component.getSize().height);
        super.paintComponent(g);
    }
}

最终有效,我不确定这是否是一个很好的解决方案