我目前正在尝试构建一个简单的程序,但尚未涵盖动作侦听器,目前我正在学习Swing / GUI。我试图在点击按钮时每隔几秒显示各种图像,就像幻灯片放映一样。
我遇到的问题是如何实际停止幻灯片放映?我有按钮,当点击我希望能够停止幻灯片放映但我无法在显示器运行时单击它。我不确定下面的代码是否正确,线程中断是为了确保程序不会停止/卡住。
startSlide.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent actionEvent)
{
try{
Thread.sleep(5000);
Thread.interrupted();
}
catch (java.lang.InterruptedException ie){
System.out.println(ie);
}
}
});
答案 0 :(得分:2)
请勿在事件调度线程的上下文中调用Thread.sleep
。这将导致整个UI停止,并且在返回之前不会发生新的更新。
相反,使用javax.swing.Timer
可以在指定的时间段后设置回调,然后您可以根据需要采取行动。
请查看Concurrency in Swing和How to Use Swing Timers了解详情......
答案 1 :(得分:0)
Thread.sleep()
方法抛出InterruptedException
并负责中断。这意味着当你在外面的某个地方有你的线程的引用时,你可能会这样做
thread.interrupt();
并妥善处理线程内部的这种中断,即停止幻灯片放映或做任何必要的事情。