我已经搜索了几天的答案并阅读了很多关于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进行此操作的任何建议吗?
答案 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);
}
}
最终有效,我不确定这是否是一个很好的解决方案