Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207

    Controntare due icone tra loro

    Ragazzi se voglio effettuare un confronto..tra un'icona ke ho su un bottone e un'altra determinata icona devo fare in questo modo??

    codice:
    if (jButton1.getIcon()==new ImageIcon(getClass().getResource("/travel1.jpg")) )
    grazie...

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

    Re: Controntare due icone tra loro

    Originariamente inviato da jin85
    Ragazzi se voglio effettuare un confronto..tra un'icona ke ho su un bottone e un'altra determinata icona devo fare in questo modo??

    codice:
    if (jButton1.getIcon()==new ImageIcon(getClass().getResource("/travel1.jpg")) )
    No, perché la icona in jButton1 è un oggetto chiamiamolo X mentre l'altro è un nuovo oggetto Y (istanziato con new) e quindi hanno certamente reference diversi (essendo oggetti diversi). Quindi == ritorna false.

    Nemmeno equals() su ImageIcon va bene. ImageIcon non fa l'override di equals()

    codice:
    ImageIcon i1 = new ImageIcon("immagine.gif");
    ImageIcon i2 = new ImageIcon("immagine.gif");
    
    System.out.println(i1 == i2);
    System.out.println(i1.equals(i2));
    System.out.println(i1.getImage() == i2.getImage());
    I primi due println danno 'false'. Il secondo dà 'true'. Il motivo è che ImageIcon si basa sul Toolkit di AWT per il caricamento della immagine e c'è un sistema di "caching".
    La documentazione di getImage() di Toolkit dice:

    The underlying toolkit attempts to resolve multiple requests with the same URL to the same returned Image

    Ecco perché nell'esempio sopra si hanno oggetti ImageIcon differenti ma lo stesso identico oggetto Image.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    quindi nn ho capito....cm dovrei fare ??

    usando questo??

    codice:
    System.out.println(i1.getImage() == i2.getImage());

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da jin85
    quindi nn ho capito....cm dovrei fare ??

    usando questo??

    codice:
    System.out.println(i1.getImage() == i2.getImage());
    Sì, a patto che i due ImageIcon siano stati creati con lo stesso path o URL (a seconda di cosa hai usato).

    Per intenderci:

    ImageIcon i1 = new ImageIcon("immagine.gif");
    ImageIcon i2 = new ImageIcon("pippo/../immagine.gif");

    Il file caricato è esattamente lo stesso, nel secondo path si va semplicemente in una sottodirectory e poi si torna sopra. Quindi la immagine è la stessa. Ma il path è differente. E questo vuol dire che nemmeno il terzo test può dare true perché si avranno Image differenti.

    Quello che conta è proprio la uguaglianza di pathname o URL.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    ma io avendo un'immagine sul bottone e una in memoria (nello stesso path) devo fare in questo modo :
    codice:
    ImageIcon i1 = jButton1.getIcon();
    ImageIcon i2 = new ImageIcon("immagine.gif");
    
    i1.getImage() == i2.getImage()
    giusto?in questo caso mi dovrebbe dare true...le due immagini, sia quella caricata sul bottone ke quella che ho in memoria si trovano nello stesso path, quindi nn dovrei avere problemi.

    correggimi se sbaglio.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    cmq scusami...ora mi stavo cimentando...ma forse nn ci siamo capiti su un punto.....

    io ho due Icon non ImageIcon

    devo confrontare due Icon, di cui una la prendo da un bottone con getIcon(), l'altra invece ce l'ho in memoria..entrambe le icone hanno lo stesso path...

    quindi vorrei sapere come confrontare due Icon .

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    207
    risolto...ho fatto un cast a ImageIcon

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.