使用线程实现刷新表

时间:2015-05-29 10:30:22

标签: java multithreading swing jtable

我正在做一个Swing应用程序,在其中一个表单中,我有一个表,我想定期更新。我首先考虑使用Timer,但任务可能很耗时,并且可能会冻结GUI。然后,我考虑使用SwingWorker,但它被设计为执行一次,我需要在表单打开时定期执行此任务(每两到三分钟)。

在这个表单的代码中,我实现了三个方法:acceptNew(),它运行一个快速UPDATE查询listRequests(),它运行一些查询以填充ArrayList所有记录;和manipulateTable(),它将表模型与ArrayList进行比较,并更新/插入记录。

简而言之,acceptNew()执行快速任务,listRequests()执行另一项任务,其完成时间取决于数据库中的记录数,manipulateTable()更新GUI。我需要定期调用这三种方法而不冻结GUI。

1 个答案:

答案 0 :(得分:0)

您可以使用SwingWorker publish发出新listRequests()状态,并在manipulateTable()方法中调用process并在其间休眠。

或者只是创建并提交一个新的SwingWorker,每次从Timer更新一次。