因此,我正在JPanel中繪製線條,每次繪製一條線時,我都希望它暫停一秒。我使用了TimeUnit和Timer等其他的東西,我發現在這個網站上看到的東西,但到目前爲止,我只是無法讓它工作。我有JFrame所有的設置和準備去,這只是最後一塊。此外,我想知道是否有效的方法可以應用於其他類型的形狀和事物,而不僅僅是線條。如何在java中延遲繪畫進行中
public class Panel extends JPanel {
Color [] colors = {Color.WHITE, Color.BLUE, Color.RED,Color.YELLOW,Color.CYAN,Color.GREEN, Color.PINK,Color.ORANGE};
Random r = new Random();
int amount;
public Panel(int amount) {
this.amount = amount;
}
public void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
for (int i = 0; i < amount; i++) {
Timer timer = new Timer(2000, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
g2.setColor(colors[r.nextInt(7)]);
g2.drawLine(r.nextInt(600), r.nextInt(600), r.nextInt(600), r.nextInt(600));
}
});
timer.setRepeats(false);
timer.start();
}
}
}
繪畫方法不應該嘗試執行長時間運行的任務。基本上有兩種好方法可以解決這個問題,一個是存儲每次調用paint時需要着色的所有行的列表(這是幾千行中最快的,然後減慢),另一個是畫每一行到一個緩衝的圖像(這是每個油漆更多的工作,直到每個繪製每一行的努力,超過它)。你更願意追求哪種方法? –
@RakeshKR請停止給Swing動畫的建議,直到你能解釋爲什麼***這個建議是錯誤的。 –