0

我有一个扩展 AbstractTableModel 的类,它从数据库中汇集数据,由于它是一个 Swing 组件,我在 EventQueue 中对其进行了初始化,问题是大部分操作,例如获取连接和查询数据库都在事件队列中运行,因此加载需要时间表。有没有办法将这两个过程分开。

4

3 回答 3

1

使用SwingWorker执行繁重的后台任务以避免阻塞 EDT。

于 2013-07-30T07:34:06.190 回答
0

如果您需要执行一项耗时的操作,为了防止 GUI 冻结,您必须在与 Event Dispatcher 线程不同的线程中执行此操作。这些线程称为工作线程,有关如何使用它们的示例在另一个问题中有详细说明。

编辑:我在这里找到了一个非常好的介绍和示例文章

于 2013-07-30T07:40:04.820 回答
-2

您可以在与事件队列分开的线程中设置表,如下所示:

new Thread() {
    public void run() {
        // setup the table
    }
}.start();

这将导致代码在run新线程中运行,这正是您想要的。

于 2013-07-30T07:28:05.990 回答