3

実際の環境でプログラムを変更せずに Java のルック アンド フィールを変更することは可能ですか?

理論的には答えがイエスであることはわかっています。また、デモ アプリケーションを作成し、実行時でもルック アンド フィールを変更したところ、機能しました。しかし、多くのコントロールを含む実際のアプリケーションを作成したとき、ルック アンド フィールの変更は実際には機能していませんでした。

  • 異なるルック アンド フィールには、異なるバグ (または奇妙な機能) があります。たとえば、JTextField と JFormattedTextField に同じスタイルを作成するものもあれば、異なるスタイルを使用するものもあります。この変更は、ユーザーにとって非常に煩わしい場合があります。
  • コントロールのサイズは同じではありません (異なるフォント、異なる境界線を使用)。そのため、変更後にウィンドウが見苦しく見えることがあります。
  • キーボード ショートカットも異なる場合があります。
  • ...

私のアプリケーションでは、ルック アンド フィールを変更した後 (実際には、ルック アンド フィールを変更する代わりに、異なるスキンで同じルック アンド フィールを使用してみました)、常にアプリケーションを変更する必要があります。それほど大きな変更ではありませんが、ルックアンドフィールの変更を困難にする小さな変更がたくさんあります。

私が試したルック アンド フィール (現在は skinlf を使用) で非常に不運だったのでしょう、それともルック アンド フィールの変更は小さなデモ アプリケーションのように簡単ではありませんか?

更新: 私は Swing を使用していますが、現在、他の GUI ライブラリに変更することはできません。

UPDATE2 : 質問が明確ではなかったようです。ルックアンドフィールを変更する方法を知っています。私の質問は次のとおりです。ルック アンド フィール (またはルック アンド フィールのスキン) を簡単に変更できる実際のアプリケーションを作成することは可能ですか? 現在、ルック アンド フィールを変更する場合、2 行または 3 行を変更するだけでは十分ではありません。アプリケーション全体を見直して、ルック アンド フィールの変更によって引き起こされた多くの問題を修正する必要があります。dhiller は、skinlf をより良いルック アンド フィールに置き換えることを提案しました。スキン交換がうまく機能するスキン可能なルック アンド フィールを教えてもらえますか?

4

5 に答える 5

2

はい、アプリケーションのコードを変更せずに、特定の外観でアプリケーションを開始するさまざまな方法があります。簡単な方法は、アプリケーションの起動時にシステム プロパティを設定することです。たとえば、アプリケーションを起動するシェル スクリプトまたはバッチ ファイルがある場合は、コマンドを次のように変更するだけです。

java -jar yourapp.jar

java -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel -jar yourapp.jar

-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel は、使用するデフォルトのルック アンド フィールを GTKLookAndFeel に設定します。

Java インストールの swing.properties ファイルを使用する方法もあります。詳細については、こちらをご覧ください

于 2008-11-18T11:02:06.880 に答える
1

UIManager でルック アンド フィールを設定してみましたか? 冗談だ。ただし、真剣に、ルック アンド フィールを変更してアプリが正しく表示されない場合は、LayoutManager を正しい方法で使用していないことが原因です。これの最も簡単な例は、null レイアウト マネージャーの使用です。このアプローチはクロスプラットフォームではありません (極端な例)。開発手法として、さまざまな lookAndFeels を使用してすべての Swing コンセプト テストを行う必要があります。そうしないと、アプリで「物事を機能させる」誘惑に駆られることになりますが、これは重要ではありません。レイアウトを本当に理解するのは大変な作業です。

とはいえ、キーボード ショートカットのようなものには、常に特別な処理が必要です。Mac のメニューには特別な処理が必要です。など...そして、アプリのパッケージ化があります。

そうです、Java は小規模なデスクトップ デモに最適であり、実際のアプリを完成させるには作業が必要です。

于 2010-01-15T23:52:23.893 に答える
1

一般に、システムのルック アンド フィールを使用して、ユーザーがプラットフォームのルック アンド フィールに既に慣れている場合に、新しいルック アンド フィールを導入してユーザーを混乱させないようにすることをお勧めします。プラットフォームのルック アンド フィールは、次のコードで実現できます。

  UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName() );

とにかく、「起動後にルック アンド フィールを変更する (Java チュートリアル)」を参照してください。

ところで: 間違ったレイアウト マネージャーを使用している可能性がありますか?

于 2008-11-18T11:39:56.680 に答える
0

If your final goal is native look and feel for each target OS, you can look at SWT. This will provide OS native widgets which will change along with the OS look and feel.

That way, the user does not need to change the options for your application, all they need to do is modify their OS theme and the changes will propogate automatically to your app.

于 2008-11-18T14:56:19.030 に答える
0

ルック アンド フィールフォントと動作を変更する必要があります。これがルック アンド フィール システムの目的です。ネイティブ OS として動作する必要があり、OS ごとに表示方法が異なります。「Java」のルック アンド フィール (メタリックまたは何かと呼ばれる) は、多くの標準 OS バージョンよりも一般的にきれいであることを告白しなければなりません (これは、私が最後に Java を使用してから数年で変わった可能性があります)。デフォルトで OS のルック アンド フィールを使用することをお勧めします。たとえば、[ファイルを開く] メニューが他のすべてのプログラムと同じように動作しないと混乱するためです (Windows ユーザーは残念ながら一貫性のない GUI に慣れていますが、Mac ユーザーはすべてのプログラムが適切に振る舞うこと)。

于 2008-11-18T10:44:07.743 に答える