Java等待在网格布局中进行边框调整

时间:2014-05-16 20:10:29

标签: java swing

您好我在网格布局面板上有一个图块(JLabel) 我称之为tile.setBorder(BorderFactory.createEmptyBorder());更新磁贴的边框 然后我调用一个冗长的方法,但在冗长的方法完成后更新图像。 我想在调用方法之前完成边框调整并在屏幕上更新图像,我该怎么做?

2 个答案:

答案 0 :(得分:1)

尝试SwingUtilities.invokeLater()以确保EDT已正确初始化。

请查看以下帖子,了解更多相关信息。


示例代码:

SwingUtilities.invokeLater(new Runnable() {

    @Override
    public void run() {
         // any GUI related code will fall here
         tile.setBorder(BorderFactory.createEmptyBorder());

        // do not add any lengthy method call here
    }
});

欲了解更多信息,请阅读以下评论。

答案 1 :(得分:0)

  

但是在冗长的方法完成后图像会更新。

这是因为长时间运行的任务阻止事件调度线程并阻止GUI重新绘制自己,直到任务完成运行。解决方案是为任务使用单独的线程。

阅读Concurrency上Swing教程中的部分,了解更多信息和示例。您可能会发现创建自己的线程的SwingWorker更方便。