等待Swing元素重绘完成

3

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

这样做是正确的吗?


可能会有所帮助,了解你想要实现什么。 - trashgod
重新格式化的代码,请在不正确的情况下恢复。 - trashgod
2个回答

3

问题是你为什么需要这样做?为什么要重新绘制整个框架并等待完成。如果我们知道您想要做什么,我们可能会提供更好的建议。

repaint()只是安排绘画工作。 RepaintManager可能会合并多个绘画请求,并一次性执行它们,以使绘画更有效率。

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

JComponent.paintImmediately(...);

但这只应该作为最后的手段使用,而不是用来解决设计问题。

1

您可以覆盖 paintComponent() 方法:

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    ...
    // repaint finished here
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接