2013-05-01 43 views
0

我用Nimbus使用自定义颜色。经过几个小时的搜索,我找不到如何正确设置JFileChooser的背景和前景色。用Nimbus L&F设置filechooser颜色

我的(非工作)代码:

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 defaults这应该工作,但是没有。我在其他地方也找不到答案。

我想要什么改变

我想有标签:(看看:,文件夹名称:文件类型)显示为白色和深灰色显示的浅灰色边框。

感谢提前:)

更新: 我能解决一些文字颜色与弯路:

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中出现的弹出菜单。

+0

[您SSCCE可以基于(http://stackoverflow.com/a/6758985/714968) – mKorbel 2013-05-03 17:47:19

+0

啊,我现在才注意到了评论。谢谢,我会看看那个。 – djpalme 2013-05-06 10:47:06

回答

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

         } 
        }); 
+0

谢谢你的回答尼古拉·我想你的代码工作我发现,解决我的问题的解决方案 - 可以通过设置nimbusBase颜色 我选择你的答案是正确的,因为它专门设置了颜色的JFileChooser这是我在问答中提到的原来。 – djpalme 2013-07-15 09:55:17

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); 
+0

感谢您的快速回复,但可悲的是,没有做任何事情:( 还使用:[code] defaults.put(“FileChooser.textForeground”,Color.white); [/ code] 我不知道为什么这样一个组件保持打了这么多。 不过,我可以把它通过向后安装这匹得到一个可用的状态。 我设置默认的文本颜色默认textForeground为白色,固定设置为黑色需要一个黑色的字体组件(如表) – djpalme 2013-05-03 17:13:49

0

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

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

+0

是的,不,不和(或只是等待修复这些bug的更新。)等待,直到我们死了....摆动处于maintanace模式,不改变高达Java8 – mKorbel 2013-07-13 21:06:33

+0

谢谢您的回答。当你想设置背景颜色时,Nimbus是部分荒谬的。 对于JTabbedPane选项卡,您需要重写Paint方法。 通过设置底色,但我得到它的工作,它看起来很漂亮。 – djpalme 2013-07-15 09:52:58

+0

等待Java 8,让Nimbus成为国王! – user12458 2013-07-15 09:55:49

0

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

我想为我的应用程序提供一个黑暗的主题,它贯穿整个应用程序。我的解决方案,为我工作很干脆:

设置默认颜色雨云。

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

这方面做里面的JFileChooser菜单的伎俩。它还修正了JTabbed窗格等

问题,我需要的,现在做的是修复了文本,因为他们WERY黑色的深灰色。

+0

我选择了NikolaDragićević的答案,因为我没有正确地问我的问题。 – djpalme 2013-07-15 09:49:19