2011-05-25 62 views
1

我有一个java框,其中有各种组件。当用户执行某个操作时,我想清空该框,在其中放入一组不同的组件,然后将该框表示给用户。该框是一个JDialog框的一部分。我可以清空这个盒子并重新填充它,但显示并不反映新的内容。它仅仅是一个空白的显示(我假设反映了我清空盒子内容的事实)。我在放入新内容后重新绘制盒子,但盒子所在区域的显示器是空白的。奇怪的是,如果我第一次添加一个线框到框中,然后重新绘制它,框的内容出现在屏幕上。这是最离奇的行为。任何想法为什么会发生这种情况,以及如何解决这个问题?更改内容后刷新框的内容

感谢,

埃利奥特

回答

2

你添加和删除从EDT内容?如果这是发生在错误的线程上可能会导致奇怪的重绘行为。

可能也想尝试

dialog.revalidate() 

,如果上面没有问题的,而不是调用重绘

+0

自一个JDialog应该dialog.validate()。但是,这是诀窍。 – Elliott 2011-05-25 20:38:29

+0

@Elliott:不,重新验证是正确的,但在将其转换为JPanel之后,您会在JDialog的contentPane上调用它。 '((JPanel)dialog.getContentPane()).revalidate();'会做。 1+到meverett。 – 2011-05-25 21:35:40