Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Cambiare icona Jar

  1. #1

    Cambiare icona Jar

    Tanto per cominciare preciso che non intendo cambiare l'icona che visualizza il S.O. ma bensì quella che appare successivamente... :master:
    Capisco che mi sono spiegato male quindi per evitare dubbi uso un'immagine:


    Volevo sapere due cose:
    1) Ho visto che alcune applicazioni jar l'anno interna al file, quindi... come la carico su eclipse?
    2) Come faccio a richiamarla e la impostarla come icona?

    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Cambiare icona Jar

    Originariamente inviato da mattealex
    1) Ho visto che alcune applicazioni jar l'anno interna al file, quindi... come la carico su eclipse?
    Visto che la icona è fissa e "fa parte" della applicazione, il modo più sensato è trattarla come "risorsa" e caricarla tramite getResource() di Class.
    Sul tutorial Sun: Loading Images Using getResource

    Originariamente inviato da mattealex
    2) Come faccio a richiamarla e la impostarla come icona?
    Su un qualunque Window/Frame/Dialog/JFrame/JDialog con setIconImage(Image image) oppure solo da Java 6 con setIconImages(List<? extends Image> icons)

    setIconImages è stato aggiunto perché con l'altro metodo si può assegnare solo 1 immagine. Ma il S.O. per una certa finestra può visualizzare la icona in diversi posti/modi, sulla barra del titolo (tipicamente 16x16) ovviamente ma anche ad esempio (più grande, tipicamente 32x32) quando si fa ALT+TAB. Ma essendo 1 sola c'era il problema che poteva risultare "male" a causa di un resize di cui non si ha il controllo.

    Con setIconImages si può assegnare una lista di immagini, con dimensioni diverse e viene scelta la immagine più appropriata in base a dove/come deve essere visualizzata.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Per il primo punto ok nessun problema!
    Per il secondo non ho capito un paio di cose...
    setIconImages è stato aggiunto perché con l'altro metodo si può assegnare solo 1 immagine. Ma il S.O. per una certa finestra può visualizzare la icona in diversi posti/modi, sulla barra del titolo (tipicamente 16x16) ovviamente ma anche ad esempio (più grande, tipicamente 32x32) quando si fa ALT+TAB. Ma essendo 1 sola c'era il problema che poteva risultare "male" a causa di un resize di cui non si ha il controllo.
    1)Quindi l'icona che devo caricare deve essre in formato gif png o jpg e di dimensione 16 o 32?

    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?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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?
    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.

    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.

    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?
    getResource() si invoca tipicamente su un Class (più raramente su un ClassLoader).
    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"));
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie stavo per scrivere che avevo risolto XD

    Ho fatto così!
    codice:
    Image icon = Toolkit.getDefaultToolkit().getImage("indirizzo");
    		setIconImage(icon);

  6. #6
    Ho un problema!
    Su eclipse mi funziona perfettamente ma quando arrivo a esportare il progetto l'icona non c'è più come mai?
    Dalle dimensioni del file posso dedurre che non mi ha proprio esportato l'immagine!
    C'è qualcosa che devo fare per fargli esportare il file con l'immagine?

  7. #7
    Mostro i miei dati:


    su eclipse funziona e si vede l'icona:

    I dati del path

    il contenuto della cartella jar esportata:


    Non capisco come mai, ma dopo che ho esportato il progetto l'icona del jar (quella in fig 2) torna a essere quella predefinita di java.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.