强制立即布局并在Swing中绘画

Ham*_*amy 6 layout swing paint

我似乎无法在Swing中强制布局.我有一个JComponent添加到JLayeredPane我和我设置边框JComponent.然后,我想立即重新绘制所有内容 - 不是在"请尽快做这个"的意义上invalidate(),而是同步并立即.有帮助吗?我似乎无法找到正确的方法,而我所有的阅读invalidate(), validate(), repaint(), doLayout(), etc只是让我更加困惑!

pho*_*oji 1

让 Swing 更新显示的最可靠方法是使用SwingUtilities.invokeLater. 在你的情况下,它看起来像

SwingUtilities.invokeLater(new Runnable {
                             public void run() { 
                                somecomponent.repaint();
                             }
                           });
Run Code Online (Sandbox Code Playgroud)

我意识到“invokelater”听起来并不像它立即执行任何操作,但实际上,与直接调用例如相比,以这种方式发布的事件往往执行得相当快somecomponent.repaint()。如果你绝对必须让你的控制代码等待GUI更新,那么也可以invokeAndWait,但我的经验是,这很少有必要。

另请参阅:有关 Swing 中事件分派的文档