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