0

我在 Nimbus 中使用自定义颜色。经过数小时的搜索,我无法找到如何正确设置背景和前景色JFileChooser

我的(非工作)代码:

UIManager.getLookAndFeelDefaults().put("FileChooser.background", Color.DARK_GRAY);  
UIManager.getLookAndFeelDefaults().put("FileChooser.textForeground", Color.white);  
UIManager.getLookAndFeelDefaults().put("FileChooser.foreground", Color.white);  
UIManager.getLookAndFeelDefaults().put("Label.foreground", Color.white);  

根据Oracle Nimbus 默认设置,这应该可以工作,但不能。我也无法在其他任何地方找到答案。

我想改变什么

我想让标签:(查找:,文件夹名称:文件类型)显示为白色,浅灰色边框显示为深灰色。

提前致谢 :)

更新: 我可以绕道修复一些文本颜色:

UIManager.getLookAndFeelDefaults().put("textForeground", Color.white);
UIManager.getLookAndFeelDefaults().put("Menu.textForeground", Color.white);
UIManager.getLookAndFeelDefaults().put("ToolTip.textForeground", Color.BLACK);
UIManager.getLookAndFeelDefaults().put("List.textForeground", Color.BLACK);
UIManager.getLookAndFeelDefaults().put("TextField.foreground", Color.BLACK);
UIManager.getLookAndFeelDefaults().put("TextArea.foreground", Color.BLACK);
UIManager.getLookAndFeelDefaults().put("EditorPane.foreground", Color.BLACK);

但是,Frame BackgroundJFileChooser仍然是浅灰色(而所有其他 Frames/Dialogs 和 MessageDialogs 都遵循设置的背景颜色 DarkGray)。

我现在注意到的另一个奇怪的问题是:弹出菜单尊重背景颜色JMenuItem但忽略前景。为了说明我的意思,我上传了一个新的图像,在其中比较了“正常”弹出菜单和出现在JFileChooser.

4

4 回答 4

4

我有同样的问题,关于更改 JFileChooser 的背景颜色。

我的解决方案 - 新画家。我想这对您的目的也很有用。Constants.APP_BACKGROUND_COLOR 是所需的背景颜色。这是一个代码示例:

UIManager.getLookAndFeelDefaults().put("FileChooser.background", Constants.APP_BACKGROUND_COLOR);

UIManager.getLookAndFeelDefaults().put("FileChooser[Enabled].backgroundPainter",
                    new Painter<JFileChooser>()
                    {
                        @Override
                        public void paint(Graphics2D g, JFileChooser object, int width, int height)
                        {
                            g.setColor(Constants.APP_BACKGROUND_COLOR);
                            g.draw(object.getBounds());

                        }
                    });
于 2013-06-15T08:27:09.590 回答
1

您可能需要查看http://docs.oracle.com/javase/7/docs/api/javax/swing/plaf/nimbus/NimbusStyle.html以获取有关覆盖 Nimbus 配色方案的一些有用信息。

使用下面的代码,我之前已经设法更改了 jProgesssBar 的 Nimbus 配色方案。我已经对其进行了一些调整,以便它可能适用于您的 jFileChooser。希望这有效!

    UIDefaults defaults = new UIDefaults();
    defaults.put("FileChooser.background", Color.DARK_GRAY);
    defaults.put("FileChooser.textForeground", Color.white);

    yourJFileChooser.putClientProperty("Nimbus.Overrides.InheritDefaults", Boolean.TRUE);
    yourJFileChooser.putClientProperty("Nimbus.Overrides", defaults);
于 2013-05-02T09:54:54.813 回答
0

感谢大家的回答,并为我迟到的回复道歉,因为我一直忙于其他组件。

我想要一个在整个应用程序中一致的应用程序的深色主题。对我有用的解决方案很简单:

为 Nimbus 设置默认颜色。

UIManager.put("nimbusBase", Color.DARK_GRAY);

这已经使用 JFilechooser 中的菜单完成了技巧。它还修复了 JTabbed Pane 等问题。

我现在需要做的就是修复文本,因为它们在深灰色上是黑色的。

于 2013-07-15T09:46:11.377 回答
0

Nimbus Look And Feel UI 默认值有许多尚未纠正的错误。有些工作,如JProgressBarJButton背景渐变,有些则没有。即使我尝试过设置相同的东西。最好编写自己的代码而不是使用这些默认值,或者只是等待修复这些错误的更新。

只需获取JFileChooser使用该getComponents()方法的组件,然后执行此操作。

于 2013-07-13T19:24:19.493 回答