Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    15

    [JAVA] Aggiungere una ImageIcon ad una JLabel

    Ciao.

    Sto provando ad aggiungere un'immagine ad un JPanel. Facendo ricerche online ho letto che la soluzione più semplice è quella di aggiungere una ImageIcon ad una JLabel. Solo che lanciando il programma questa immagine non viene caricata e non capisco perchè.

    codice:
    .....
    //pannello logo
    JPanel logo = new JPanel(new BorderLayout());
    JPanel pVuoto = new JPanel(); pVuoto.setBackground(Color.orange);
    
    JLabel label = new JLabel(new ImageIcon("logo.jpg")); 
    label.setOpaque(true);
                
    logo.add(label, BorderLayout.CENTER);
    logo.add(pVuoto, BorderLayout.SOUTH);
    logo.setBackground(Color.orange);
    ...

    l'immagine è salvata nel package.
    dov'è il problema??
    (ho già provato a cambiare l'estensione da jpg a jpeg)

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Capa[00] Visualizza il messaggio
    codice:
    JLabel label = new JLabel(new ImageIcon("logo.jpg"));
    La specifica "logo.jpg" è direttamente sul file-system ed è relativa alla directory corrente. Non conta il package dove l'hai messa ... conta la directory che è "corrente" quando si avvia la JVM.

    Se vuoi che non conti la directory corrente ma che la immagine venga trovata secondo la ricerca lungo il "classpath" (come avviene per le classi), allora devi cambiare modo ed utilizzare getResource di Class.
    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
    Dec 2014
    Messaggi
    15
    dici così?

    JLabel label = new JLabel(new ImageIcon(getClass().getResource("logo.jpg")));

    no perchè neanche così mi funge <.<

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Capa[00] Visualizza il messaggio
    dici così?

    JLabel label = new JLabel(new ImageIcon(getClass().getResource("logo.jpg")));
    Sì, in questo modo conta solo il package della classe sul cui java.lang.Class associato invochi il getResource.
    Quindi logo.jpg deve stare nella stessa cartella dove ci sarà il TuaClasse.class
    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
    Dec 2014
    Messaggi
    15
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sì, in questo modo conta solo il package della classe sul cui java.lang.Class associato invochi il getResource.
    Quindi logo.jpg deve stare nella stessa cartella dove ci sarà il TuaClasse.class
    aaaaaaah ecco allora. io l'ho salvata dove ci sono i .java
    Grazie mille, sei sempre super veloce nelle risposte :P

    però continua a dirmi Source not found...
    Ultima modifica di Capa[00]; 20-05-2015 a 21:25

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Capa[00] Visualizza il messaggio
    aaaaaaah ecco allora. io l'ho salvata dove ci sono i .java
    No alt. Se stai usando un IDE (es. Eclipse), dipende anche dal tipo di progetto. Con Eclipse se fai un normalissimo Java Project (niente Maven o altro), puoi mettere il logo.jpg dove hai TuaClasse.java. Ci pensa Eclipse a "ribaltare" le risorse sotto la "bin" nel package corrispondente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    15
    Ah perfetto. Quindi l'errore è da cercare altrove...mmmh.

    EDIT: ho risolto il "source not found", era un problema di estensione. Solo che ora è accaduta una cosa molto strana. Se nella JLabel ci carico l'immagine scompare tutto dal frame principale (finestra grigia) mentre se ci inserisco una stringa tutto funziona perfettamente. può essere per caso la dimensione dell'immagine il problema?

    EDIT!!!!! HO RISOLTO!!!! Grazie Dio.
    per qualche strana ragione dichiarando la JLabel come istanza funziona tutto alla perfezione
    Ultima modifica di Capa[00]; 20-05-2015 a 22:04 Motivo: ho risolto

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.