JPanelで線を描いているので、描画するたびに1秒間ポーズしたいと思っています。私は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();
}
}
}
ペイントメソッドは、長時間実行されるタスクの実装を試みるべきではありません。基本的に2つの良い方法があります.1つは、塗料が呼び出されるたびに塗装する必要があるすべての線のリストを保存することです(これは数千の線に対して最速ですが遅くなります)。各ラインをバッファリングされたイメージに描画することです(これは、各ラインを個別に描画するまで、すべてのペイントでより多くの作業を行います)。どのアプローチを追求したいですか? –
@RakeshKRスイングアニメーションのアドバイスは、アドバイスが間違っている理由を説明できるようになるまで、停止してください。 –