我正在做一个Swing应用程序,在其中一个表单中,我有一个表,我想定期更新。我首先考虑使用Timer
,但任务可能很耗时,并且可能会冻结GUI。然后,我考虑使用SwingWorker
,但它被设计为执行一次,我需要在表单打开时定期执行此任务(每两到三分钟)。
在这个表单的代码中,我实现了三个方法:acceptNew()
,它运行一个快速UPDATE查询listRequests()
,它运行一些查询以填充ArrayList
所有记录;和manipulateTable()
,它将表模型与ArrayList进行比较,并更新/插入记录。
简而言之,acceptNew()
执行快速任务,listRequests()
执行另一项任务,其完成时间取决于数据库中的记录数,manipulateTable()
更新GUI。我需要定期调用这三种方法而不冻结GUI。
答案 0 :(得分:0)
您可以使用SwingWorker publish
发出新listRequests()
状态,并在manipulateTable()
方法中调用process
并在其间休眠。
或者只是创建并提交一个新的SwingWorker,每次从Timer更新一次。