如何在Java/Swing应用程序中使用Windows XP主题?
我必须在我的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。我们如何使用上述类强制它?
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
这将让你的本机外观
不在* nix或OS X上不会。它会让你更像一个'ClassNotFoundException'(幸运的是)。非常差的建议。-1 – 2013-05-09 12:00:08
我通常使用这条线
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(开个玩笑)
我的问题不在于获得系统的外观和感觉。我的应用程序只能运行在Windows上,同时,我不希望它有一个Windows经典主题,如果用户更改他的主题,这是可能的。寻找任何解决方法... – Sudhir 2013-05-09 11:57:51
的方法之一是实现它在构造函数中:
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";
“WindowsLookAndFeel”的全部用途是将Swing UI完全呈现为本机Windows UI。因此,您的应用程序会自动适应用户选择的任何内容,这是非常有意义的。 – 2013-05-09 10:38:24
我真的不明白问题是什么。无所作为,让用户拥有他们想要的任何PLAF!顺便说一句,* nix和OS X上的用户得到了什么? – 2013-05-09 10:52:16
使用第二个经典之一。您将始终拥有经典风格,独立于用户选择的主题。 – FaithReaper 2017-09-20 09:53:12