Newsgroup: it.comp.java
Titolo: Inserimento immagine in un'Applet

Ragazzi ho trovato il seguente codice da inserire in un'applet per far
visualizzare un'immagine...Ma a me non funziona...perchč?Sapete darmi una
dritta?
public class ImgPanel extends JPanel {
    Image img1;
    public ImgPanel(){
        Toolkit tk = Toolkit.getDefaultToolkit();
        img1 = tk.getImage("new.gif");
        MediaTracker mt = new MediaTracker(this);
        mt.addImage(img1, 1);
        // aggiunta di eventuali altre immagini
        try { mt.waitForAll(); }
        catch (InterruptedException e){}
    }
    public void paintComponent(Graphics g){
        super.paintComponent(g);
        g.drawImage(img1, 30, 30, null);
        /* Immagine (img1), posizione nel pannello (30,30)
        e un oggetto (null, cioč nessuno) a cui notificare
        l'avvenuto caricamento */
    }
}
Ovviamente nel metodo init() della mia applet aggiungo un'oggetto della
classe imgPanel all'interno di un contenitore.
P.s. Non mi da alcun errore in compilazione.
Grazie Anticipatamente.

         img1 = tk.getImage("new.gif");
x il fatto che nn riesca a trovare il file.
prova a caricare la immagine dal package
tipo (supponendo che il tuo package sia a.b, e che la
immagine sia della dir a/b/):
...
ClassLoader cl = ImgPanel.class.getClassLoader();
img1 = tk.getImage(cl.getResource("a/b/new.gif"));
...
prova cosi'
Cappe

Ti ringrazio, adesso ho risolto il problema.
Invece non capisco perchè riesco solo a far visualizzare l'immagine in un
contenitore interno ad una  JFrame e non in un contenitore interno al metodo
init().
Spero di essere stato chiaro

 
nu ... copia anche il codice necessario,
per favore
ciao
Cappe

 per favore
Speriamo che non ti stia disturbando troppo...In mezzo ci sono i commenti
che dovrebbero spiegarti meglio il problema...Grazie
public class Applet1 extends JApplet{
  public class ImgPanel extends JPanel {
     Image img1=null;
     public ImgPanel(){
                setBounds(100,100,100,100);
                Toolkit tk = Toolkit.getDefaultToolkit();
                ClassLoader cl = ImgPanel.class.getClassLoader();
                img1 = tk.getImage(cl.getResource("new.gif"));
                MediaTracker mt = new MediaTracker(this);
                mt.addImage(img1, 1);
                 // aggiunta di eventuali altre immagini
                 try {
                      mt.waitForID(1);
                 }
                 catch (InterruptedException e){
                      JOptionPane.showMessageDialog(null,"Errore nell'attesa
di caricamento dell'immagine","ATTENZIONE!",1);
                 }
     }
      public void paintComponent(Graphics g){
        super.paintComponent(g);
        ClassLoader cl = ImgPanel.class.getClassLoader();
        Toolkit tk = Toolkit.getDefaultToolkit();
        Image img1 = tk.getImage(cl.getResource("new.gif"));
        g.drawImage(img1, 300, 300,100,100, null);
         /* Immagine (img1), posizione nel pannello (30,30)
         e un oggetto (null, cioč nessuno) a cui notificare
          l'avvenuto caricamento */
     }
  }
     public void init(){
        Container cp=getContentPane();
        cp.setLayout(null);
        ImgPanel imagepanel=new ImgPanel();
         cp.add(imagepanel);
        // In pratica voglio posizionare la mia immagine in una parte
dell'applet senza aprire un nuovo frame perchč se invece facessi
        //JFrame frame=new JFrame("prova");
        //Conteiner c=frame.getContentPane();
        //c.add(imagepanel);
        //frame.show();
        // Con queste ultime righe segnate come commento riesco a
visualizzare l'immagine ma il problema č che mi apre un'altra finestra..cosa
che non voglio
    }
}

non disturbi affatto: e' un newsgroup!
cmq non riesco a capire bene dove possa essere l'inghippo.
in ogni caso ti do questo suggerimento:
verifica che non ci sia un qualche riferimento al container che
al momento dell'init() sia null, oppure forza un repaint dopo aver
inserito l'immagine, oppure verifica se le dimensioni effettive
al momento dell'inserimento... o aspetta la risposta da qualcuno che se
ne intende di piu' ;)
ciao
Cappe


non e' che per caso te le disegna una sopra l'altra?!
Cappe

> non e' che per caso te le disegna una sopra l'altra?!
Non dovrebbe..
perchè ho fatto una volta sola "add()"

ho capito..
Non appena mi creo il contenitore cp č come se si sovrapponesse
all'immagine, nonostante lo aggiunga al contenitore. Invece se scrivo:
getContentPane.add(imagepane) all'interno del metodo init() (senza quindi
creare un conteiner) le cose vanno...l'unico problema č che non appena mi
creo un contenitore dove voglio inserire per esempio dei pulsanti la cosa
non va piů bene, si ripresenta lo stesso problema! Dovrei esclusivamente
visualizzare l'immagine solamente come ho spiegato all'inizio(senza creare
l'oggetto conteiner). Comunque alla fine mi sono creato dei bottoni e gli ho
inserito l'icona..č venuto piuttosto benino..
Ciao Grazie.

ciao,
potresti metterla on line e darci l'indirizzo cosi' la vediamo in 
funzione  ;)
cappe
