如何通过动作/按钮点击停止线程睡眠?

时间:2014-04-28 00:29:19

标签: java

我目前正在尝试构建一个简单的程序,但尚未涵盖动作侦听器,目前我正在学习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);
                 }
            }
      });

2 个答案:

答案 0 :(得分:2)

请勿在事件调度线程的上下文中调用Thread.sleep。这将导致整个UI停止,并且在返回之前不会发生新的更新。

相反,使用javax.swing.Timer可以在指定的时间段后设置回调,然后您可以根据需要采取行动。

请查看Concurrency in SwingHow to Use Swing Timers了解详情......

答案 1 :(得分:0)

Thread.sleep()方法抛出InterruptedException并负责中断。这意味着当你在外面的某个地方有你的线程的引用时,你可能会这样做

thread.interrupt();

并妥善处理线程内部的这种中断,即停止幻灯片放映或做任何必要的事情。

相关问题