Я работаю в первый раз с изображениями в JFrame, и у меня есть некоторые проблемы. Мне удалось разместить изображение на моем JFrame, и теперь я хочу через 2 секунды удалить свое изображение из JFrame. Но через 2 секунды изображение не исчезает, если я не изменю размер кадра или не скрою, и после этого увеличьте рамку. Помогите мне, если сможете. Благодарю.JFrame не обновляется после удаления изображения
Вот код:
File f = new File("2.jpg");
System.out.println ("Picture" + f.getAbsolutePath()); BufferedImage image = ImageIO.read (f); MyBufferedImage img = new MyBufferedImage (изображение); 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 секунды спустя»);
getContentPane(). Remove (img);
Вот класс 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;
}
}
}
Там нет способа перепроверить, попробуйте использовать getContentPane() проверки(). Или, возможно, (на JFrame) сделать this.validateTree(); –
Doh! Кроме того, они хотят следить за добавлением и удалением вещей из EDT. –