2010-03-20 1 views
6

Il seguente codice funziona correttamente quando si esegue NetBeans.Imposta immagine icona nel file Jar

this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage("PlagiaLyzerIcon.png")); 

Tuttavia, una volta incorporato nel file Jar, l'icona era sparita.

Qualcuno ha idea di quale sia il problema? Mi sono reso conto che devo mettere l'immagine dell'icona nella directory radice, tuttavia, dopo averlo compilato in JAR, l'icona è scomparsa.

Grazie per qualsiasi aiuto ...

Ciao a tutti, il problema è stato risolto con il seguente codice,

this.getFrame().setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("plagialyzer/resources/PlagiaLyzerIcon.png"))); 

funziona Dopo compilate in file jar.

risposta

7

Usa

this.getFrame().setIconImage(
new imageIcon(getClass().getClassLoader().getResource("PlagiaLyzerIcon.png")) 
); 

invece.

Nota:

questa linea funziona solo se le immagini sono nella radice del file jar. In caso contrario, è necessario specificare la cartella sulla stringa:

getResource("yourfolder/PlagiaLyzerIcon.png") 
+0

anche se imposto il percorso per la cartella, di nuovo, funziona nel progetto ma non con il file Jar. e, non sono sicuro di quale sia il problema con il codice che hai fornito? Problema del costruttore? –

+0

Voglio dire, questo codice non funziona, this.getFrame() setIconImage. ( nuova imageIcon (getClass() getClassLoader() getResource ("PlagiaLyzerIcon.png")) ..); –

+1

ooo ora vedo il problema ... this.getFrame(). SetIconImage (new imageIcon (getClass(). GetClassLoader(). GetResource ("PlagiaLyzerIcon.png")). GetImage()); dovrebbe essere lavoro – Hector

0

Hai specificato il percorso di generazione delle tue icone nelle opzioni di Netbean prima di esportare il JAR? Su Eclipse è fatto aggiungendo una cartella sorgente all'interno del percorso di costruzione Java come mostrato in questo screenshot. Dovrebbe essere allo stesso modo su Netbeans?

2

Questo perché l'IDE Netbeans ha un diverso percorso di classe rispetto a quando si esegue il file jar autonomo (senza Ant).

Assumere il progetto Netbeans è in posizione /project/:

Il percorso di classe è: /project/build/classes/ e la radice /project/ progetto. Se le tue icone sono memorizzate in: /project/myicons/, allora fanno parte del classpath, poiché lo è anche /project/. Ma quando costruisci il tuo progetto, solo i file in /project/build/classes/ finiranno nel file jar, questi file sono "build" da /projcet/src/.

Soluzione:

spostare le icone in una fonte pacchetto: /project/src/myicons/

Oppure, aggiungere la cartella /project/myicons/ alle vostre fonti (tasto destro del mouse il vostro progetto -> Proprietà -> Sorgenti -> Aggiungi cartella vi)

+0

@Pindatjuh, in realtà mi sono spostato in una cartella come suggerito, ma il codice, this.getFrame(). SetIconImage (Toolkit.getDefaultToolkit(). GetImage ("PlagiaLyzerIcon.png")); sembra funzionare solo nella directory radice del progetto .. –

1

Grazie mille ...

Ecco il codice che funziona per me !!!!

BufferedImage image = null; 

    try { 
     image = ImageIO.read(getClass().getClassLoader().getResource("images/frame.png")); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


    super.setIconImage(image); 
0

Utilizzando NetBeans come me, basta mettere il logo (nel mio caso mylogo.png) all'interno src/directory nella cartella del progetto. Assicurati che le dimensioni siano 32 x 32 pixel per garantire la migliore qualità per l'icona. Non sono riuscito a impostare le immagini .ico come icona JFrame ma .png ha funzionato bene. Estendendo JFrame, ho impostato direttamente la mia icona vaso con:

Image getIcon() 
{ return Toolkit.getDefaultToolkit().getImage(getClass().getClassLoader().getResource("mylogo.png")); } 

setIconImage(getIcon()); 

Dopo pulita e costruire vaso, l'icona del file jar ancora non è cambiato (ancora l'icona del barattolo di default), ma quando si esegue il file il vaso della l'icona nella barra del titolo e nella barra delle applicazioni sarà la tua icona personalizzata. Puoi cambiare l'icona del file jar creando scorciatoie e cambiando icona per quel collegamento. La migliore risoluzione per l'icona di collegamento è 512 x 512 pixel .ico