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;
    }
}

このように、ウィンドウのルック アンド フィールを強制する場合は、この lookAndFeel が存在するかどうかを確認する必要があるためです。

または、存在するかどうかを確認せずに lookAndFeel を設定する 2 つの良い方法があります。

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" は、ユーザーが Windows テーマをクラシックに設定していなくても、Java アプリケーション GUI を強制的に Windows クラシック テーマに一致させることです。

したがって、クラシックを強制することはできますが、Windows クラシック テーマを使用して Vista/7 の LookAndFeel を強制することはできません。

または、アプリケーションを Vista/7 の LookAndFeel のようなものに設計することもできます (冗談です)。

于 2013-05-09T11:30:55.833 に答える
2

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

これにより、ネイティブのルック アンド フィールが得られます

于 2013-05-09T11:18:41.620 に答える