2013-05-09 94 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"; 
相关问题