Come posso impostare l'icona di un'applicazione a livello globale in Swing?

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

  •  01-07-2019
  •  | 
  •  

Domanda

So di poterne specificare uno per ogni modulo, o per il modulo radice e poi passerà in cascata a tutti i moduli figlio, ma mi piacerebbe avere un modo per sovrascrivere la tazza di caffè Java predefinita per tutti forma anche quelli che potrei dimenticare.

Qualche suggerimento?

È stato utile?

Soluzione

Puoi fare in modo che il modulo radice (con il quale presumo intendi JFrame ) essere la tua sottoclasse di JFrame e inserire funzionalità standard nel suo costruttore, come:

this.setIconImage(STANDARD_ICON);

Puoi anche raggruppare altre cose standard qui, come memorizzare le metriche della finestra della cornice come una preferenza dell'utente, gestire i pannelli splash, ecc.

Qualsiasi nuovo frame generato da questo sarebbe anche un'istanza di questa sottoclasse JFrame . L'unica cosa che devi ricordare è creare un'istanza della sottoclasse, anziché JFrame . Non credo che ci sia un sostituto per ricordarsi di farlo, ma almeno adesso si tratta di ricordare una sottoclasse invece di una chiamata setIconImage (tra le possibili altre funzionalità).

Altri suggerimenti

C'è un altro modo, ma è più che altro un "hack" quindi una vera soluzione ....

Se si sta distribuendo JRE con la propria applicazione, è possibile sostituire la risorsa icona tazza di caffè in java exe / dll / rt.jar ovunque si trovi con la propria icona. Potrebbe non essere molto legittimo, ma è una possibilità ...

Inoltre, se ne hai uno " principale " finestra e imposta correttamente la sua icona, purché utilizzi quella finestra principale come il "genitore" per tutte le classi della finestra di dialogo, erediteranno l'icona. Tuttavia, per ogni nuovo fotogramma deve essere impostata l'icona.

come ha detto Paul / Andreas, la sottoclasse di JFrame sarà la soluzione migliore.

Estendi la classe JDialog (ad esempio chiamala MyDialog) e imposta l'icona nel costruttore. Quindi tutte le finestre di dialogo dovrebbero estendere l'implementazione (MyDialog).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top