我正在使用多個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