我希望能够等待Swing的repaint
完成。
示例:
frame.repaint();
wait_for_repaint_to_finish();
//work
我有这样的事情:
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
try {
frame.repaint();
} catch (Exception e) {
e.printStackTrace();
}
}
});
这是正确的方法吗?
答案 0 :(得分:3)
问题是为什么你需要这样的东西?为什么要重新绘制整个框架并等待它完成。如果我们知道你想要做什么,我们可以给出一个更好的建议。
repaint()只是安排绘画完成。 RepaintManager可能会整合多个绘制请求并一次执行它们,以提高绘图效率。
话虽如此,如果你真的需要强制重画,你可以使用
JComponent.paintImmediately(...);
但这只应作为最后的手段而不是解决设计问题。
答案 1 :(得分:1)
您可以覆盖paintComponent()
:
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
...
// repaint finished here
}