我正在使用多个BufferedImages。我现在用的是JPanel的涂料功能借鉴了JPanel的currentImg:JPanel不重画
@Override
public void paint(Graphics g) {
g.drawImage(currentImg, 0, 0, null);
}
currentImg使用,所以我可以很容易地切换图像,它在一开始等于normalImg。 redImg是一个与normalImg不同的BufferedImage。 现在我想绘制redImg半秒钟,然后再次normalImg。
currentImg = redImg;
repaint();
Thread.sleep(1000);
currentImg = normalImg;
repaint();
但是这段代码什么都不做,JPanel没有重新绘制。此代码虽然工作:
currentImg = redImg;
repaint();
JOptionPane.showMessageDialog(this,"test");
Thread.sleep(1000);
JOptionPane.showMessageDialog(this,"test");
currentImg = normalImg;
repaint();
但我不想显示消息对话框只是为了重新正确重绘它。 感谢您的帮助:)
1.我不知道为什么我应该这样做,但'paintComonent'做同样对我来说,所以我改变它 2.没有覆盖油漆 3.现在我用一个秋千定时器,谢谢 我不明白你的意思是4. 但现在它的作品。非常感谢你! – kaesaecracker 2015-04-05 22:35:24
@kaesaecracker尝试在面板上添加一个组件,覆盖'paint'。然后切换到'paintComponent',不同的应该是明显的。 – Obicere 2015-04-05 22:39:12
@Obicere我不需要JPanel内部的任何组件,实际上整个应用程序只使用一个JFrame和一个JPanel,而不是更多:) – kaesaecracker 2015-04-05 22:47:55