我希望能够等待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();
        }
    }
});

这是正确的方法吗?

最佳答案

问题是为什么您需要这样的东西?您为什么要重新粉刷整个框架并等待它完成。如果我们知道您要尝试的操作,我们可能会给出更好的建议。

repaint()只是计划绘画完成。 RepaintManager可能会合并多个绘画请求,并一次执行,以提高绘画效率。

话虽如此,如果您真的需要强制重新粉刷,可以使用

JComponent.paintImmediately(...);

但这仅应作为最后的手段,而不能解决设计问题。

关于java - 等待Swing的元素重新绘制完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5133429/

10-10 18:26