2013-05-01 45 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