4

我必须在我的 Java/Swing 项目中使用 Windows XP 主题。有像下面这样的课程。

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

WindowsLookAndFeel当有人想要使用与用户当前应用的相同主题时可以使用。

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

WindowsClassicLookAndFeel当有人想专门使用 windows 经典主题时可以使用。

当我们将 Windows 的主题从 XP 更改为经典时,Swing UI 也从 XP 更改为经典。我们如何使用上述类强制它?

4

3 回答 3

4

我通常使用这条线

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

因为如果您在另一个系统中运行该应用程序,您可能没有 Windows 的外观和感觉。

或者你可以使用这个:

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

因为这样的话,如果你想强制windows Look and feel你应该验证这个lookAndFeel是否存在

或者你有两种很好的方法来设置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 之类的东西(开个玩笑)

于 2013-05-09T11:30:55.833 回答
2

一种方法是在构造函数中实现它:

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";
于 2017-05-20T19:07:03.593 回答
0
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");

这将为您提供原生的外观和感觉

于 2013-05-09T11:18:41.620 回答