gpt4 book ai didi

java - 需要一个定时的 panel.repaint();

转载 作者:行者123 更新时间:2023-12-01 19:30:43 24 4
gpt4 key购买 nike

我想要我的代码绘制一个面板,请等待 1 秒钟。通过执行函数 nextGen() 编辑面板;并重新喷漆面板。我希望这个函数发生 5 次。问题是,每次我尝试使用 thread.sleep() 执行 try/catch 操作时,它都会“跳过”重绘,nextGen(); 会执行此操作;然后 sleep 。请帮忙!

button3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
for(int i = 0;i<5;i++) {
try {
Thread.sleep(1000);
nextGen();
panel.repaint();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//System.exit(0);
}
});

最佳答案

使用 Swing 计时器...

Timer timer = new Timer(1000, new ActionListener() {
private int count;
@Override
public void actionPerformed(ActionEvent evt) {
nextGen();
panel.repaint();
count++;
if (count >= 5) {
((Timer)evt.getSource()).stop();
}
}
});
timer.start();

参见Concurrency in Swing有关您遇到此特定问题的原因的更多信息,请访问 How to Use Swing Timers有关 Swing Timer

的更多详细信息

关于java - 需要一个定时的 panel.repaint();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59261101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com