【发布时间】:2017-06-19 08:20:09
【问题描述】:
Swing 新手,但 Java 不熟悉。我正在尝试以下方法:
public void actionPerformed(ActionEvent e) {
methodA();
pane.repaint();
methodB();
pane.repaint();
}
其中 methodB() 需要很长时间。我希望它绘制两次,但第一次绘制调用从未发生。好像我做到了:
public void actionPerformed(ActionEvent e) {
methodA();
methodB();
pane.repaint();
}
对不起,如果这是基本的,但我已经尝试搜索,但我仍然不明白为什么。
我试过直接调用paint,它按预期工作,除了应用程序在每次重绘时闪烁。
【问题讨论】:
-
不同的场景,不同的调用,但相同的行为和相同的解决方案:Java swing GUI freezes
-
repaint()是很快(不是立即)绘制组件的请求。但是如果methodB需要很长时间,它会阻塞事件派发线程,并且在完成之前不会重新绘制任何内容。考虑在另一个线程中运行methodB。