3

我希望能够等待 Swingrepaint完成。

例子:

frame.repaint();
wait_for_repaint_to_finish();
//work

我有这样的事情:

SwingUtilities.invokeAndWait(new Runnable() {

    public void run() {
        try {
            frame.repaint();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

这是正确的方法吗?

4

2 回答 2

3

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

repaint() 只是安排要完成的绘画。RepaintManager 可能会合并多个绘制请求并一次执行它们以提高绘制效率。

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

JComponent.paintImmediately(...);

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

于 2011-02-27T15:56:39.763 回答
1

您可以覆盖paintComponent()

@Override
protected void paintComponent(Graphics g) {
    super.paintComponent(g);
    ...
    // repaint finished here
}
于 2011-02-27T13:50:52.230 回答