JFrame加载很晚

时间:2011-09-14 12:31:02

标签: java

我的代码是:

    solveDb_userfileInconsistency solve = new solveDb_userfileInconsistency();
    solve.setVisible(true);

    try {
        solve.solveIt();
    } catch (InstantiationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

" solveIt"方法返回30秒后直到它返回,帧没有正确安装但在solveIt方法返回后,框架安装正确,但我想要的是在进入solveIt方法之前,框架应该在屏幕上正确。是否有任何方法可以等待框架的安装,然后调用solveIt方法?

3 个答案:

答案 0 :(得分:3)

听起来你可能在UI线程上做了所有这些。不要那样做 - 让solveIt在后​​台线程上执行,如果需要更新/查询UI,则使用SwingUtilities调用UI线程。基本上,您不应该在UI线程中做大量工作 - 有关详细信息,请参阅Swing concurrency tutorial

答案 1 :(得分:1)

看看SwingWorker Class。它用于执行后台进程而不停止要安装的帧。

答案 2 :(得分:1)

将事件派发线程用于短暂的GUI相关代码。长时间运行的任务应该按照其他答案中的建议在自己的线程中执行。

因为人们打赌我。让我用一些有趣的链接补充他们的答案:

请注意,这两个链接指向JFC的有些陈旧但相关的文档。现在SwingWorker已包含在标准API中。

干杯,