Ich weiß, dass ich für jedes Formular oder für das Stammformular eine angeben kann, und dann wird es auf alle untergeordneten Formulare übertragen, aber ich möchte eine Möglichkeit haben, die Standard-Java-Kaffeetasse für alle zu überschreiben bildet sogar diejenigen, die ich vergessen könnte.
Irgendwelche Vorschläge?
Sie können die Stammform (mit der ich meine, dass Sie JFrame
meinen) Ihre eigene Unterklasse von JFrame
sein und die Standardfunktionalität in ihren Konstruktor einfügen, wie zum Beispiel:
Sie können hier auch andere Standard-Inhalte bündeln, z. B. die Fenstermesswerte des Frames als Benutzereinstellung speichern, Splash-Bereiche verwalten usw.
Alle neuen Bilder, die von diesem erzeugt werden, wären auch Instanzen dieser JFrame
Unterklasse. Die einzige Sache, an die Sie sich erinnern müssen, besteht darin, Ihre Unterklasse anstelle von JFrame
zu instanziieren. Ich denke nicht, dass es einen Ersatz dafür gibt, sich daran zu erinnern, aber zumindest muss man sich jetzt an eine Unterklasse statt an einen setIconImage
-Aufruf erinnern (unter anderen möglichen Merkmalen).
Es gibt einen anderen Weg, aber es ist eher ein "Hack" als ein echter Fix ....
Wenn Sie die JRE mit Ihrer Anwendung verteilen, können Sie die Icon-Ressource für die Kaffeetasse in der java exe / dll / rt.jar ersetzen, wo auch immer das mit Ihrem eigenen Icon ist. Es ist vielleicht nicht sehr legitim, aber es ist eine Möglichkeit ...
Wenn Sie ein "Haupt" -Fenster haben und dessen Icon korrekt einstellen, übernehmen Sie das Icon, solange Sie dieses Hauptfenster als "Eltern" für alle Dialog-Klassen verwenden. Bei allen neuen Frames muss das Symbol jedoch gesetzt sein.
Wie Paul / Andreas gesagt hat, ist die Unterklassenbildung für JFrame die beste Wahl.
Erweitern Sie die JDialog-Klasse (z. B. nennen Sie sie MyDialog), und legen Sie das Symbol im Konstruktor fest. Dann sollten alle Dialoge Ihre Implementierung (MyDialog) erweitern.