標籤:des style blog http color java 使用 io
Swing - Nimbus Look and Feel Setting一、Java 6和Java 7中設定Nimbus風格
在Java 6中Swing新增了一種介面風格-Nimbus,類名為com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel。
在Java 7更新之後,Nimbus風格的實作類別移動到了javax.swing.plaf.nimbus.NimbusLookAndFeel,同時為了向後相容,com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel純粹直接繼承自javax.swing.plaf.nimbus.NimbusLookAndFeel。
在正常情況下,我們可以使用以下方式來設定Nimbus風格(官方寫法,這種寫法在沒有Nimbus支援的Java 5中就不會設定Nimbus,不至於引起報錯):
try { for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { UIManager.setLookAndFeel(info.getClassName()); break; } }} catch (Exception e) { // If Nimbus is not available, you can set the GUI to another look and feel.}二、Nimbus修改預設設定的Bug和改進方案
這個設定本沒有任何問題,但是當我們需要修改Nimbus的一些預設設定時,比如將整體風格的背景色設定為白色,我們會首先想到使用UIManger.put("background", Color.WHITE),但是很遺憾Nimbus對這種常規設定的支援有缺陷——不響應。經過四處查詢解決方案,發現通過以下方式可以成功的設定Nimbus的一些設定(這種寫法在Java 5中會報錯,找不到類):
UIManager.setLookAndFeel(new NimbusLookAndFeel() { @Override public UIDefaults getDefaults() { UIDefaults defaults = super.getDefaults(); defaults.put("background", Color.WHITE); defaults.put("ScrollBar.width", 10); return defaults; }});
將程式碼片段2放在一個新的類的一個方法中,並將程式碼片段1中的行UIManager.setLookAndFeel(info.getClassName());替換為這個新方法,在Java 6中編譯後,在Java 5中也可以運行,不會設定Nimbus風格也不會報錯。
三、Desktop和Applet模式下的設定
將上面的設定Nimbus風格的代碼放在一個方法中,SwingTool.setNimbusLookAndFeel()。
在Desktop模式下,在main()方法的第一句話加入:
SwingTool.setNimbusLookAndFeel()
而在Applet的啟動方法init()的最後位置加上以下代碼:
SwingTool.setNimbusLookAndFeel();SwingUtilities.updateComponentTreeUI(this);
請注意,Applet模式下一定要將上述代碼放在init()方法的最後,放在方法開頭是不生效的
複製去Google翻譯翻譯結果SwingTool.setNimbusLookAndFeel()