我对Java中的线程有疑问。所以,我有一个由8个按钮组成的gui程序,如果你点击其中任何一个按钮,所有其他按钮的颜色都会改变。但我必须对其进行修改,以便在5秒后自动更改颜色。因此,当您运行程序时,所有按钮的颜色应更改为5秒。如果单击按钮,则会重置计时器。
我希望你们能就我应该如何处理它提出一些建议。我必须使用线程。任何帮助,将不胜感激。
如果我想在没有计时器的情况下这样做怎么办?
答案 0 :(得分:3)
查看javax.swing.Timer,特别是它的restart()方法(从附加到按钮的ActionListener中调用它)。
更新:如果你想在没有Timer的情况下这样做(因为它是作业?),那么:
使用无限循环创建一个守护程序线程,该循环休眠五秒钟,然后使用SwingUtils.invokeLater(...)获取GUI以在事件调度线程上更新。
如果睡眠中断,则只需循环,而不是更新GUI。
如果单击一个按钮,则中断()您的睡眠线程,(如上所述)将有效地重启计时器。
答案 1 :(得分:1)
如果您正在使用摇摆javax.swing.Timer
,那就是您所需要的。你可以在http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html