繁体   English   中英

使用Nimbus L&F设置filechooser颜色

[英]Set filechooser Colors with Nimbus L&F

我在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);

但是, JFileChooser的框架背景仍然保持浅灰色(而所有其他框架/对话框和MessageDialogs则使用设置的背景色DarkGray)。

我现在还注意到的另一个奇怪的是:popupmenu尊重JMenuItem的背景颜色,但忽略前景。 为了说明我的意思,我上传了一个新的IMAGE ,将“正常”弹出菜单与JFileChooser内部显示的弹出菜单进行比较。

我有相同的问题,涉及更改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());

                        }
                    });

您可能想查看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);

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

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

由于我一直在忙于其他组件的工作,因此感谢大家的回答和对我最近的答复表示歉意。

我希望为我的应用提供一个深色主题,该主题在整个应用中均保持一致。 对我有用的解决方案很简单:

设置Nimbus的默认颜色。

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

这已经完成了JFilechooser中菜单的技巧。 它还可以解决JTabbed Pane等问题。

我现在要做的就是修正文本,因为它们在“深灰色”中变黑了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM