有没有办法让ActionListener在读取它时执行代码?

时间:2016-02-13 18:26:22

标签: java time actionlistener

我注意到每当调用ActionListener方法时,它似乎会累积结果,然后在方法完成后,它会立即显示所有结果。例如,在我的程序中,我有几个wait(int milliseconds)方法调用。使用此代码,每当我按下一个按钮时,会有一个很长的暂停,它似乎被冻结,但它会立即显示所有内容。有没有办法让它在读取代码时执行代码?

3 个答案:

答案 0 :(得分:2)

使用使用方法doInBackground进行后台处理的swingworker类,同时可以调用其publish方法来处理进程以显示带有后台处理的结果  isShortOption("-gsd")

答案 1 :(得分:1)

你不应该在Gui线程的任何监听器中调用wait。请使用替代定时回调,例如使用我的GuiTimer课程:Call function every x time without blocking the GUI Java

答案 2 :(得分:1)

根据您要实现的目标,您可以使用SwingWorker或Swing Timer

有关详细信息,请查看Worker Threads and SwingWorkerHow to use Swing Timers

工作人员将允许您在后台运行长时间运行或阻止进程(在EDT之外),但提供了重新同步UI更新的方法。计时器将在EDT的上下文中调用已注册的ActionListener,允许您在指定的延迟(并且可能重复)之后安全地从其中更新UI