2013-05-09 75 views
2

我必須在我的Java/Swing項目中使用Windows XP主題。 有類如下。如何在Java/Swing應用程序中使用Windows XP主題?

com.sun.java.swing.plaf.windows.WindowsLookAndFeel 

WindowsLookAndFeel可當有人想要使用作爲當前用戶應用的同一主題中。

com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel 

WindowsClassicLookAndFeel可當有人要專門使用Windows經典主題中。

當我們將Windows的主題從XP更改爲classic時,swing UI也從XP更改爲classic。我們如何使用上述類強制它?

+0

「WindowsLookAndFeel」的全部用途是將Swing UI完全呈現爲本機Windows UI。因此,您的應用程序會自動適應用戶選擇的任何內容,這是非常有意義的。 – 2013-05-09 10:38:24

+1

我真的不明白問題是什麼。無所作爲,讓用戶擁有他們想要的任何PLAF!順便說一句,* nix和OS X上的用戶得到了什麼? – 2013-05-09 10:52:16

+0

使用第二個經典之一。您將始終擁有經典風格,獨立於用戶選擇的主題。 – FaithReaper 2017-09-20 09:53:12

回答

0
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

這將讓你的本機外觀

+3

不在* nix或OS X上不會。它會讓你更像一個'ClassNotFoundException'(幸運的是)。非常差的建議。-1 – 2013-05-09 12:00:08

4

我通常使用這條線

javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName()); 

,因爲如果你運行在另一個系統中的應用,你可以沒有窗戶的外觀和感覺。

,或者你可以使用這樣的:因爲這樣

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
    if ("<lookAndFeelName>".equals(info.getName())) { 
     javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
     break; 
    } 
} 

,如果要強制Windows外觀和感覺,如果這LookAndFeel都存在

或者你有2個好辦法,你應該確認如果存在設置不的LookAndFeel檢查:

try { 
    javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); 
} catch (ClassNotFoundException ex) { 
    //Handle Exception 
} catch (InstantiationException ex) { 
    //Handle Exception 
} catch (IllegalAccessException ex) { 
    //Handle Exception 
} catch (javax.swing.UnsupportedLookAndFeelException ex) { 
    //Handle Exception 
} 

或者乾脆:

try { 
    javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    //javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"); 
} catch (Exception ex) { 
    //Handle Exception 
} 

WindowsLookAndFeel和WindowsClassicLookAndFeel之間的區別是,「WindowsLookAndFeel」將對應於用戶的Windows主題,以「WindowsClassicLookAndFeel」將迫使Java應用程序的GUI,以匹配使用Windows經典主題,即使用戶沒有他們的Windows主題設置爲經典。

所以你可以強制經典,但你不能強制使用Windows經典主題的Vista/7 LookAndFeel。

或者你可以將應用程序設計,以Vista一樣東西/ 7的LookAndFeel(開個玩笑)

+0

我的問題不在於獲得系統的外觀和感覺。我的應用程序只能運行在Windows上,同時,我不希望它有一個Windows經典主題,如果用戶更改他的主題,這是可能的。尋找任何解決方法... – Sudhir 2013-05-09 11:57:51

1

的方法之一是實現它在構造函數中:

public class LookS extends JFrame { 

    String win1 = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel"; 
    String win2 = "com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel"; 

public LookS(){ 
... 

     try { 
      UIManager.setLookAndFeel(win1); 
      SwingUtilities.updateComponentTreeUI(this); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     this.setDefaultLookAndFeelDecorated(true); 
... 
} 

此外,還可以考慮這些類太:

String srt1 = "javax.swing.plaf.metal.MetalLookAndFeel"; 
    String srt2 = "javax.swing.plaf.nimbus.NimbusLookAndFeel"; 
    String srt3 = "com.sun.java.swing.plaf.motif.MotifLookAndFeel"; 
    String srt4 = "com.sun.java.swing.plaf.gtk.GTKLookAndFeel"; 
相關問題