我注意到每当调用ActionListener
方法时,它似乎会累积结果,然后在方法完成后,它会立即显示所有结果。例如,在我的程序中,我有几个wait(int milliseconds)
方法调用。使用此代码,每当我按下一个按钮时,会有一个很长的暂停,它似乎被冻结,但它会立即显示所有内容。有没有办法让它在读取代码时执行代码?
答案 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 SwingWorker和How to use Swing Timers
工作人员将允许您在后台运行长时间运行或阻止进程(在EDT之外),但提供了重新同步UI更新的方法。计时器将在EDT的上下文中调用已注册的ActionListener
,允许您在指定的延迟(并且可能重复)之后安全地从其中更新UI