Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    26

    [JAVA] Aggiungere un'immagine ad un pannello

    Ciao a tutti!
    Ho un problema riguardante l'aggiunta di un'oggetto di tipo Image ad un JPanel...
    In pratica quello che faccio è crearmi manualmente una BUfferedImage, poi dopo aver fatto un casting a Image voglio disegnarla sul pannello.
    Il metodo che uso è:
    JPanel jp= ag.getJPanel(); //dove ag è la classe dell'interfaccia grafica e jp è il pannello
    jp.getGraphics().drawImage(img, 0, 0, jp);
    Questo però non avviene tutte le volte, cioè il disegno dell'immagine avviene dopo un numero abbastanza casuale di tentativi. Certe volte funziona al primo click del bottone che richiama la fnzione mentre altre no... Ho provato a forzare il disegno del panel con la repaint, ma senza risultati .
    Ho provato anche a fare un'ImageIcon da aggiungere ad una label ma mi da errore
    Non so proprio cosa fare

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

    Re: [JAVA] Aggiungere un'immagine ad un pannello

    Originariamente inviato da crikkio
    Ho un problema riguardante l'aggiunta di un'oggetto di tipo Image ad un JPanel...
    In pratica quello che faccio è crearmi manualmente una BUfferedImage, poi dopo aver fatto un casting a Image voglio disegnarla sul pannello.
    Il metodo che uso è:
    JPanel jp= ag.getJPanel(); //dove ag è la classe dell'interfaccia grafica e jp è il pannello
    jp.getGraphics().drawImage(img, 0, 0, jp);
    Questo però non avviene tutte le volte, cioè il disegno dell'immagine avviene dopo un numero abbastanza casuale di tentativi. Certe volte funziona al primo click del bottone che richiama la fnzione mentre altre no... Ho provato a forzare il disegno del panel con la repaint, ma senza risultati .
    Non è l'approccio giusto. Non va bene cercare di disegnare "al volo" l'immagine con drawImage.

    O crei un "tuo" componente (che estende ad esempio JComponent) che visualizza un Image o crei un ImageIcon (vedi javadoc) e lo applichi su una JLabel (ImageIcon è-un Icon e JLabel accetta appunto un Icon) o in qualche altro modo.
    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
    Sep 2007
    Messaggi
    26
    Ho provato anche con un ImageIcon all'interno di una JLalbel, e alcune volte me la disegna perfettamente mentre in altri casi mi da un NullPointerException.
    il codice che ho scritto è :

    Image img = tag.getVisualTag();
    JPanel jp= ag.getJPanel();
    ImageIcon imgIc = new ImageIcon(img);
    JLabel jl = new JLabel( imgIc );
    jp.add(jl);
    jp.validate();

    e sinceramente non capisco cosa ci sia che non va....

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    non trova l'immagine? Oppure il formato immagine non è supportato?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    26
    No l'immagine la trova perchè mi faccio stampare il path ed è corretto...
    Il mio problema sta nel capire come mai certe volte funziona e certe volte no.
    E' come se non riuscisse a ridisegnare il pannello.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Prova a postare un po' più di codice. Poi perché passi per un Image per creare l'ImageIcon quando potresti direttamente passargli il percorso o l'url?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    26
    Gli passo direttamente un'image perchè devo creare l'immagine al volo e prima di salvarla (cosa che deve essere decisa dall'utente) vorrei mostrarla.
    il codice che ho fatto è questo:
    //creo un'oggetto tag che mi crea tra l'altro l'immagine
    tag= new SquareTag(code, pixelNumber, dimension);
    disegno l'mmagine sul pannello all'interno di una JLabel
    Image img = tag.getVisualTag(); //metodo che mi restituisce un Image
    JPanel jp= ag.getTagPanel(); //metodo che mi restituisce il pannello su cui disegnare
    ImageIcon imgIco = new ImageIcon(img);
    jl = new JLabel(imgIco);
    jp.add(jl);
    jp.validate();


    grazie

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    26
    Adesso ho provato a prendere lo stesso codice e metterlo in un metodo a parte e... funziona!
    Non riesco a capacitarmi...

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    allora forse l'errore non è là? metti tutto in un blocco try/catch e fatti stampare lo stack trace
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    26
    Già fatto ma non mi dice nulla...
    Credo che forse il problema era dovuto al fatto che l'immagine me la crea un thread separato ma magari mi sbaglio

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.