Swing でアプリケーションのアイコンをグローバルに設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/103179

  •  01-07-2019
  •  | 
  •  

質問

各フォーム、またはルート フォームに 1 つを指定できることはわかっています。そうすれば、すべての子フォームにカスケードされますが、それらを含むすべてのフォームのデフォルトの Java コーヒー カップをオーバーライドする方法が欲しいです。忘れてしまうかも知れません。

助言がありますか?

役に立ちましたか?

解決

ルートフォームを作成できます(つまり、 JFrame) 独自のサブクラスになります JFrame, を作成し、そのコンストラクターに次のような標準機能を組み込みます。

this.setIconImage(STANDARD_ICON);

ユーザー設定としてフレームのウィンドウ メトリクスを記憶したり、スプラッシュ ペインを管理したりするなど、他の標準的な機能もここにバンドルできます。

これによって生成された新しいフレームも、このインスタンスになります。 JFrame サブクラス。覚えておく必要がある唯一のことは、サブクラスをインスタンス化することです。 JFrame. 。これを覚えておくことに代わるものはないと思いますが、少なくとも今は、サブクラスの代わりにサブクラスを覚えておくことが重要です。 setIconImage (おそらく他の機能の中でも)呼び出し。

他のヒント

別の方法もありますが、それは実際の修正というよりは「ハック」にすぎません。

アプリケーションとともに JRE を配布している場合は、Java exe/dll/rt.jar 内のコーヒー カップ アイコン リソースを独自のアイコンに置き換えることができます。あまり合法的ではないかもしれませんが、可能性はあります...

また、「メイン」ウィンドウが 1 つあり、そのアイコンが適切に設定されている場合、そのメイン ウィンドウを Dialog クラスの「親」として使用している限り、アイコンは継承されます。ただし、新しいフレームにはアイコンを設定する必要があります。

Paul/Andreas が言ったように、JFrame をサブクラス化することが最善の策です。

JDialog クラスを拡張し (たとえば、MyDialog という名前を付けます)、コンストラクターにアイコンを設定します。次に、すべてのダイアログは実装 (MyDialog) を拡張する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top