2009-10-19 7 views
11

Javaを使用してWindows上でネイティブに見えるアプリケーションを作成することは可能ですか?ソリューションが移植可能かどうかは気にしません。私はWindowsユーザーをターゲットにすることしか考えていないからです。 Scalaを使用しています。Windows上でJavaアプリケーションをネイティブに見せる方法 - 方法

申し訳ありませんが詳細が不明ですが、以前はJavaを使用していませんでしたので、これが可能かどうかはわかりません。

+2

.NETで開発しますか?申し訳ありませんが抵抗できませんでした。 ;) – dkackman

+1

ネイティブコントロールが重要であることに同意します。すべての成功したメインストリームアプリは、ネイティブコントロールを使用しています。あなたは2つの選択肢があります。(1)Swingのようなウィジェットを使用して、ネイティブな外観を偽造しようとします。これは決して完全には機能しません。時にはそれは完全に恐ろしいものです。 (2)(ほとんど)ネイティブウィジェットの周りのJavaラッパーであるSWTのようなウィジェットセットを使用します。これは完全に機能します。コアディストリビューションにSWTのようなパッケージがないことは、クライアント上でJavaの運命を決めることです。 (はい、Javaはサーバーといくつかのエンタープライズデスクトップで大成功です。) – DigitalRoss

答えて

23
try { 
    // Set the Look and Feel of the application to the operating 
    // system's look and feel. 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} 
catch (ClassNotFoundException e) { 
} 
catch (InstantiationException e) { 
} 
catch (IllegalAccessException e) { 
} 
catch (UnsupportedLookAndFeelException e) { 
} 

これは、ルックアンドフィールをシステムのルックアンドフィールに設定する必要があります。これはあなたのGUIコードの前に行います。たとえば、mainの方法です。

ルックアンドフィールの詳細については、Java Tutorial on them,as suggested by carwashをご覧ください。

+0

この答えには暗黙のうちに*制御用の*スイングが含まれています。これは、従来のJavaの知恵と公式のSunのパッケージであり、誰もそれを助言する責任がありません。しかし、あなたはネイティブのコントロールを取得しませんし、偽装されたものは誰をだますことはありません。 EclipseがEclipseに無料で提供したとき、SunはSWTを受け入れるべきだった。つまり、Sunはデスクトップクライアントアプリケーションには適していないウィジェット(SwingとAWT)しか提供していません。その結果、彼らはほとんど何も持ち合わせておらず、スイングを落としているようです。 – DigitalRoss

+1

私はスイングを使用し、私は「偽装された」コントロールにだまされています。このコードを使用すると、Swingがどのように見えず、Windowsのように動作しないかを説明してください。 –

+0

それは実際にはMac上で、非常にひどく、吸う。 – AlBlue

0

はい、JavaではWindows固有のルックアンドフィールをWindowsで利用できます。あなたのルック・アンド・フィールを変える方法を見てください。そうすれば正しい方向に向かうはずです。

0

あなたのような何かをしたい:(。もちろん、Windows上でのみ動作します)

UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 

を結果が見えると合理的にネイティブな感じ。例: here

+0

これはWindows上でのみ動作します。別のシステムにいた場合、 'UnsupportedLookAndFeelException'がスローされます。 –

+0

OPには「私はWindowsユーザーをターゲットにする」と述べています。そして、ええ、私は主なポイントに集中するためにtry-catchを省略しました。 (これはチェック例外なので、コンパイラは実際のコードから忘れてしまった人に思い出させるでしょう:) – Jonik

4

はこちらをご覧ください:Java™ Tutorials: How to Set the Look and Feel

try { 
    // Set System L&F 
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 
} 
catch (UnsupportedLookAndFeelException e) { 
    // handle exception 
} 
2

あなたは、Windowsのルックアンドフィールを使用する必要があります。

あなたは、コマンドラインでそれを指定することができます。ここでは

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp 

またはコードで

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); 

は、詳細は以下のとおりです。How to set the look and feel

9

みんなを使用する必要があります他にもSwingのものが掲載されているので、私はplaに行くつもりですy悪魔の主張者は、SWTと言います。

SWTはEclipse Foundationによって作成されたウィジェットツールキットです。 Windows、OSX、そして* nix(Linux、AIX、BSDなど)のさまざまな味のために、システムのネイティブGUIを覆う薄いラッパーです。

これは、SunのJFC/Swingが取った独自のコンポーネントを描画する反対のルートです。

+0

Eclipse RCP開発の外でSWTをSwingに使用する利点は何か不思議です。私はほとんどのOSがUIManager.getSystemLookAndFeelClassName()によってカバーされていると思います。なぜこの目的のために外部ライブラリを持ち込みたいのですか? –

+3

私は多くのデスクトップアプリケーション開発をしていませんが、主な利点は、Swingのような独自のコンポーネントを描画するのではなく、OSのネイティブレンダリングライブラリを使用することです。 – Powerlord

+2

高レベルのSWTとスイングはここをクリック:http://www.developer.com/java/other/article.php/10936_2179061_2/Swing-and-SWT-A-Tale-of-Two-Java-GUI-Libraries.htm – Smalltown2k

2

まだ誰も言及していないのはJGoodiesです。メニュー、アイコン、色、境界線、フォント、フォントサイズ、インセット、およびウィジェット:

なJGoodies Windowsが&感は以下の分野でのWindows 95/98/NT/ME/2000上の正確なエミュレーションに焦点を当てて見て寸法。サイズ、インセット、およびウィジェットのサイズを調整するために、画面の解像度(96dpiと120dpi)を尊重します。 (Source

関連する問題