【问题标题】:How to design a class of background task for swing application如何为swing应用设计一类后台任务
【发布时间】:2015-08-12 23:46:52
【问题描述】:

我可以很好地从 JTable 中的查询结果中加载数据。

SELECT * FROM 'customer info';

制作一个结果集和JTable的地方很容易处理。

但问题是,由于我的数据库表太大,加载需要很长时间。我的应用程序完全冻结,直到当前任务完成。我知道摇摆工人可以执行后台任务。我研究了这个,但在我的情况下我没有找到任何合适的解决方案。因为我已经用基本的方式写了很多函数。

那么最后我需要什么?

我需要一个带有 Swing Worker 的类,通过它我可以轻松地在我的应用程序中的任何位置使用它的对象。假设我在此类构造函数中发送我的查询字符串和 JTable。然后它会自动启动一个后台线程来制作结果集并将其放入 JTable 中。

【问题讨论】:

标签: java database swing


【解决方案1】:

好的,现在它在我的情况下工作:) 这是我自己的解决方案....

public class UsableSwingWorkerThread extends SwingWorker<ResultSet, Object> {

JTable table;
String query;


public UsableSwingWorkerThread(JTable table, String query) {
    this.table = table;

    this.query = query;

}

@Override
protected ResultSet doInBackground() throws Exception {

    return DatabaseFunctionClass.con.prepareStatement(query).executeQuery();
}

void loadTable(TableModel tb) {
    new UsableDefaultLoadTable(tb, table);
}

@Override
protected void done() {
    try {
        loadTable(DbUtils.resultSetToTableModel(get()));            
    } catch (Exception ignore) {
        StaticAccess.showMassageDialog(StaticAccess.mainFrame, "Fail to load. try again later..", ignore);
    }
}

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多