Oppure

Loading
25/10/10 18:50
a_butta
Ciao a tutti
Girando per la rete ho visto come visualizzare un'immagine all'interno di un JPanel e ho partorito semplicemente questo:
@Override
public void paint(Graphics g) {
   Image img = Toolkit.getDefaultToolkit().createImage("C:/images/digest.PNG");
   g.drawImage(img, 400, 400, jPanel1);
}
  
@Override
public void update(Graphics g) {
   paint(g);
}

L'immagine "non si visualizza", però quando allargo la finestra si vede per qualche millisecondo l'immagine che appare e scompare: non riesce ad essere visualizzata costantemente.
Qual'è il problema? Cosa sbaglio?:d
Grazie per l'aiuto in anticipo...
Ultima modifica effettuata da a_butta 25/10/10 18:52
aaa
26/10/10 15:37
paoloricciuti
Postato originariamente da a_butta:

Ciao a tutti
Girando per la rete ho visto come visualizzare un'immagine all'interno di un JPanel e ho partorito semplicemente questo:
@Override
public void paint(Graphics g) {
   Image img = Toolkit.getDefaultToolkit().createImage("C:/images/digest.PNG");
   g.drawImage(img, 400, 400, jPanel1);
}
  
@Override
public void update(Graphics g) {
   paint(g);
}

L'immagine "non si visualizza", però quando allargo la finestra si vede per qualche millisecondo l'immagine che appare e scompare: non riesce ad essere visualizzata costantemente.
Qual'è il problema? Cosa sbaglio?:d
Grazie per l'aiuto in anticipo...

Non fare l'override di paint e di update ma fai l'override di paintComponents(Graphics g); e dovrebbe funzionare.
aaa
26/10/10 15:43
bububs
Prova così e fammi sapere:
import java.awt.*;
import javax.swing.*;
import javax.imageio.*;
import java.io.*;

#############################

//Attributo generale:
Image img;

//Nel Costruttore JPanel: 
try{
  img=ImageIo.read(new File("immagine.jpg"));
} 
catch(IOException errore){ }

//Nel Metodo paint:
super.paint(g);
Graphics2D g2=(Graphics2D)g;
g2.drawImage(img,0,0,this);
Ultima modifica effettuata da bububs 26/10/10 15:48
aaa
26/10/10 18:54
a_butta
Ho provato entrambe i consigli ma:
Se pongo paintComponent anzichè paint l'immagine proprio non mi viene disegnata;
Per l'altro metodo (quello di bubus), non ho capito molto bene dove è situato il costruttore JPanel.
Vi posto comunque il codice intero della classe che utilizzo, magari potete aiutarmi lì.
Il primo link segue l'esempio di Paolo, l'altro quello di Bubus:
pastebin.com/…
pastebin.com/…
aaa
27/10/10 16:56
bububs
Prova così:
Ridefinisci così:
protected void paintComponent(Graphics g) {
    setOpaque(false);
    g.drawImage(img, 0, 0, null);
    super.paintComponent(g);
 }

Nel costruttore:
Image img = Toolkit.getDefaultToolkit().createImage("immagine.jpg");
loadImage(img);


Funzione loadImage:
private void loadImage(Image img) {
    try {
      MediaTracker track = new MediaTracker(this);    //aspetta che l'immagini si carichi completamente
      track.addImage(img, 0);
      track.waitForID(0);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }


Prova e fammi sapere! :k:
Ultima modifica effettuata da bububs 27/10/10 17:31
aaa
27/10/10 23:11
paoloricciuti
Postato originariamente da a_butta:

Ho provato entrambe i consigli ma:
Se pongo paintComponent anzichè paint l'immagine proprio non mi viene disegnata;
Per l'altro metodo (quello di bubus), non ho capito molto bene dove è situato il costruttore JPanel.
Vi posto comunque il codice intero della classe che utilizzo, magari potete aiutarmi lì.
Il primo link segue l'esempio di Paolo, l'altro quello di Bubus:
pastebin.com/…
pastebin.com/…

Non vorrei dire niente ma non c'è nel link la soluzione che ti ho detto. Ad ogni modo, devi lasciare anche super.paintComponents(g); e solo dopo questa istruzione devi aggiungere il drawImage();
aaa
28/10/10 11:47
a_butta
Postato originariamente da paoloricciuti:
Non vorrei dire niente ma non c'è nel link la soluzione che ti ho detto. Ad ogni modo, devi lasciare anche super.paintComponents(g); e solo dopo questa istruzione devi aggiungere il drawImage();


Cavolo hai perfettamente ragione! Modificando uno ho fatto confusione e ho incollato due uguali...
Comunque seguendo la tua soluzione ho inserito:
@Override
public void paintComponents(Graphics g) {
   Image img = Toolkit.getDefaultToolkit().createImage("C:/images/digest.PNG");
   super.paintComponents(g);
   g.drawImage(img, 0, 0, jPanel1);
}

@Override
public void update(Graphics g) {
   paintComponents(g);
}

Non mi disegna niente... Intendevi questo?
aaa
28/10/10 14:33
paoloricciuti
Postato originariamente da a_butta:

Postato originariamente da paoloricciuti:
Non vorrei dire niente ma non c'è nel link la soluzione che ti ho detto. Ad ogni modo, devi lasciare anche super.paintComponents(g); e solo dopo questa istruzione devi aggiungere il drawImage();


Cavolo hai perfettamente ragione! Modificando uno ho fatto confusione e ho incollato due uguali...
Comunque seguendo la tua soluzione ho inserito:
@Override
public void paintComponents(Graphics g) {
   Image img = Toolkit.getDefaultToolkit().createImage("C:/images/digest.PNG");
   super.paintComponents(g);
   g.drawImage(img, 0, 0, jPanel1);
}

@Override
public void update(Graphics g) {
   paintComponents(g);
}

Non mi disegna niente... Intendevi questo?


Togli l'override di update e dovrebbe funzionare...almeno a me ha sempre funzionato!!
aaa