簡體   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