各フォームまたはルート フォームに 1 つ指定できることはわかっていますが、それはすべての子フォームにカスケードしますが、すべてのフォームでデフォルトの Java Coffee Cup をオーバーライドする方法が必要です。私は忘れるかもしれません。
助言がありますか?
ルート フォーム (これは を意味すると仮定しますJFrame
) を の独自のサブクラスにJFrame
し、そのコンストラクターに次のような標準機能を配置できます。
this.setIconImage(STANDARD_ICON);
フレームのウィンドウ メトリックをユーザー設定として記憶したり、スプラッシュ ペインを管理したりするなど、他の標準的なものもここにバンドルできます。
このフレームによって生成された新しいフレームも、このJFrame
サブクラスのインスタンスになります。覚えておかなければならない唯一のことは、代わりにサブクラスをインスタンス化することですJFrame
。これを行うことを覚えておくことに代わるものはないと思いますが、少なくとも今は、setIconImage
(おそらく他の機能の中でも) 呼び出しの代わりにサブクラスを覚えておくことの問題です。
別の方法がありますが、実際の修正ではなく「ハック」です....
JRE をアプリケーションと共に配布する場合、java exe/dll/rt.jar 内のコーヒー カップ アイコン リソースを独自のアイコンに置き換えることができます。あまり合法的ではないかもしれませんが、可能性はあります...
また、「メイン」ウィンドウが 1 つあり、そのアイコンを適切に設定した場合、そのメイン ウィンドウを Dialog クラスの「親」として使用する限り、それらはアイコンを継承します。ただし、新しいフレームにはアイコンを設定する必要があります。
Paul/Andreas が言ったように、JFrame をサブクラス化することが最善の策です。
JDialogクラスを拡張し(たとえば、MyDialogという名前を付けます)、コンストラクターでアイコンを設定します。次に、すべてのダイアログで実装を拡張する必要があります(MyDialog)。