0

我已经搜索了几天的答案并阅读了很多关于 LookAndFeels 和不透明问题的信息,但找不到解决方案。我正在使用 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 做到这一点?

4

1 回答 1

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);
    }
}

终于奏效了,但我不确定这是否是一个好的解决方案

于 2013-01-23T16:20:17.340 回答