0

私の環境はJDK6です。また、同じ JRE を使用して、Win7 と Win2003 の両方でコードをテストしています。

コード「UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");」を使用して JAVA WindowsLookAndFeel をインストールしました。

WindowsLookAndFeel をインストールした後、UI は Win7 と Win2003 で一貫して動作するはずでした。OS関連の「UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());」というコードを使うのとは違うはずだと思います。しかし、実際には、UI は Win7 では Win7 のように見え、Win2003 では Win2003 のように見えます。WindowsLookAndFeel のソース コードを読んだところ、Windows NT のバージョンが 4.0 未満の場合、WindowsLookAndFeel は代わりに WindowsClassicLookAndFeel を使用することがわかりました。ただし、Win2003 の Windows NT のバージョンは 5.2 です。

また、CrossPlatformLookAndFeelClassName でさえ、Win7 と Win2003 では Java の外観が異なります。

説明できますか?私は本当に混乱しています。

WindowsLookAndFeel をインストールすると、異なる Windows OS で同じ UI を使用できますか? ありがとうございました。

4

1 に答える 1

2

WindowsLookAndFeel をインストールした後、UI は Win7 と Win2003 で一貫して動作するはずでした。

その仮定は正しくありません。Oracle のチュートリアルでは、次のように説明されています。

「Windows の場合、システム L&F は「Windows」です。これは、実行中の特定の Windows OS (従来の Windows、XP、または Vista) の L&F を模倣しています。」

...そしてそれがWindowsLookAndFeel実装されます。

また、CrossPlatformLookAndFeelClassName でさえ、Win7 と Win2003 では Java の外観が異なります。

チュートリアルには次のように書かれています。

"CrossPlatformLookAndFeel - これは、すべてのプラットフォームで同じように見える "Java L&F" ("Metal" とも呼ばれます) です。これは Java API (javax.swing.plaf.metal) の一部であり、次の場合に使用されるデフォルトです。別の L&F を設定するためにコードで何もしません。」

「... すべてのプラットフォームで同じように見えることを目指している」と述べたほうがよいと思います。実際には、UI をプラットフォーム間で同一に見せることは非常に困難です。

もう 1 つの可能性は、(どういうわけか) 異なるバージョンの Java やプラットフォームで異なるデフォルトのルック アンド フィールを選択していることです。例:メタル対オーシャン対ニンバス。

最後に、期待しすぎているかもしれません。Win2003 は、Java 7 でサポートされているプラ​​ットフォームとしてリストされていません。Java 6 でサポートされていましたが、Sun / Oracle にとって、UI の一貫性をレガシー Windows プラットフォームに完全に適合させることは、明らかに優先度が高くありませんでした。サポート終了。

于 2013-04-28T03:23:09.207 に答える