Je travaille pour la première fois avec des images dans un JFrame, et j'ai quelques problèmes. J'ai réussi à mettre une image sur mon JFrame, et maintenant je veux après 2 secondes enlever mon image du JFrame. Mais au bout de 2 secondes, l'image ne disparaît pas, sauf si je redimensionne le cadre ou si je minimise et ensuite maximise le cadre. Aide moi si tu peux. Merci.JFrame ne se rafraîchit pas après la suppression d'une image
Voici le code:
File f = new File("2.jpg");
System.out.println ("Image" + f.getAbsolutePath()); BufferedImage image = ImageIO.read (f); MyBufferedImage img = new MyBufferedImage (image); img.resize (400, 300); img.setSize (400, 300); img.setLocation (50, 50); getContentPane(). Add (img);
this.setSize (600, 400); this.setLocationRelativeTo (null); this.setVisible (true);
Thread.sleep (2000); System.out.println ("2 secondes plus");
getContentPane(). Remove (img);
Voici la classe MyBufferedImage.
public class MyBufferedImage extends JComponent{
private BufferedImage image;
private int nPaint;
private int avgTime;
private long previousSecondsTime;
public MyBufferedImage(BufferedImage b) {
super();
this.image = b;
this.nPaint = 0;
this.avgTime = 0;
this.previousSecondsTime = System.currentTimeMillis();
}
@Override
public void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
g2D.setColor(Color.BLACK);
g2D.fillRect(0, 0, this.getWidth(), this.getHeight());
long currentTimeA = System.currentTimeMillis();
//g2D.drawImage(this.image, 320, 0, 0, 240, 0, 0, 640, 480, null);
g2D.drawImage(image, 0,0, null);
long currentTimeB = System.currentTimeMillis();
this.avgTime += currentTimeB - currentTimeA;
this.nPaint++;
if (currentTimeB - this.previousSecondsTime > 1000) {
System.out.format("Drawn FPS: %d\n", nPaint++);
System.out.format("Average time of drawings in the last sec.: %.1f ms\n", (double) this.avgTime/this.nPaint++);
this.previousSecondsTime = currentTimeB;
this.avgTime = 0;
this.nPaint = 0;
}
}
}
Il n'y a pas de méthode de revalidation, essayez d'utiliser getContentPane() valider(). Ou éventuellement (sur le JFrame) faites ceci.validateTree(); –
Doh! En outre, ils veulent faire attention à l'ajout et à l'enlèvement des choses de l'EDT –