Java swing应用程序无法运行

时间:2017-07-28 13:30:22

标签: java swing timer triggers actionlistener

以下是我的申请图片:

image

按下新按钮时,将显示问题并启动计时器。

但是在按下“新建”按钮后,既没有计时器运行也没有显示文本,默认关闭操作不起作用。当我注释掉checkTimer()然后它工作正常。

以下是代码:

foreach ($content['posts']->data as $posts) { 

    echo "<p>posts id: $posts->id</p>";

    echo "<p>posts message: $posts->message</p>";
}

请指导我为什么不能正常工作。

3 个答案:

答案 0 :(得分:3)

通过调用sleep()来阻止checkTimer()中的EventDispatcherThread。实际上,它可以防止重新绘制UI并处理所有事件。

而是启动一个新的单独线程并调用UI更改,例如。

            timerField1.setText(Integer.toString(min));
            timerField2.setText(Integer.toString(sec));

在SwingUtilities.invokeAndWait()块中(也可以尝试invokeLater())

答案 1 :(得分:2)

Thread.sleep(1000);

Event Dispatch Thread (EDT)上执行代码时,请勿使用Thead.sleep。这将导致GUI冻结并阻止GUI响应事件。

  

按下新按钮时,将显示问题并启动计时器。

然后你应该使用Swing Timer。您可以将Timer设置为每秒触发一次,以便更新时间。然后,如果发射300次,你将停止计时器,游戏将结束。

阅读How to Use Swing Timers上Swing教程中的部分,了解更多信息和工作示例。

答案 2 :(得分:-1)

你的问题是你checkTimer()它不是一个线程,然后如果按下New按钮再次调用checkTimer()但是,另一个实例正在运行。您需要使用Swing Timer作为您的时钟,然后当您按下New按钮时可以将其停止。