La questione è che con setIconImage() imposti solo 1 immagine. Su Windows se è 16x16 la vedi bene nella barra del titolo ma quando il S.O. la mostra nella finestra del task-switch (Alt+Tab) la deve mostrare tipicamente 32x32 e quindi viene ridimensionata e probabilmente non risulterà così bene.Originariamente inviato da mattealex
1)Quindi l'icona che devo caricare deve essre in formato gif png o jpg e di dimensione 16 o 32?
Caso contrario se ne imposti una 32x32, la vedi bene nella finestra del task-switch ma nella barra del titolo la deve per forza ridimensionare a 16x16 e in questo caso quasi sicuramente si vede peggio.
Ecco perché da Java 6 (e purtroppo solo da questa release ... l'avessero messo molto prima!) hanno aggiunto setIconImages(), perché così si può impostare una lista di immagini, es. una 16x16, una 32x32, una 48x48 e a seconda di dove verrà mostrata la icona, verrà scelta la immagine più appropriata.
getResource() si invoca tipicamente su un Class (più raramente su un ClassLoader).Originariamente inviato da mattealex
2)Non ho capito come impostarla come icona della finestra... :master:
...per esempio sei volessi mettere il file "images/ico.png" come lo imposto come l'icona di una finestra?
La ricerca della risorsa si basa sul "classpath". Non centra dove stanno i sorgenti (o il progetto se in un IDE), non centra quale è la directory "corrente".
Se hai una tua classe com.miaapp.MioFrame, allora il .class dovrà stare sotto un percorso com/miaapp/MioFrame.class. E in miaapp ci potrebbe essere una ulteriore cartella "images" con dentro icona.png. Riassumo:
com/miaapp/MioFrame.class
com/miaapp/images/icona.png
Nel codice:
codice:Toolkit toolkit = Toolkit.getDefaultToolkit(); Image img = toolkit.getImage(MioFrame.class.getResource("images/icona.png"));

Rispondi quotando