2011-03-08 68 views
0

当我尝试显示大小或对齐方式时,对JComponents进行细微更改时,尝试显示时在JDialog中延迟显示JComponents?

- >当我尝试用鼠标显示组件时,显示一个空的对话框。 ..

- >所以我禁用setResize()属性...

- >仍然没有效果...

帮我在这....

谢谢你

+0

你在修改gui线程上的组​​件吗? (你应该是) – MeBigFatGuy 2011-03-08 05:30:02

+0

@userNNNNN“帮我解决这个问题....”请修复那个粘性“。”键,记住要问一个问题。像这样的问题通常是由于未能正确使用布局而导致的。如果查看布局并不能排序问题,我建议您发布一个SSCCE(http://pscode.org/sscce.html),因为我的水晶球在清洁工。 – 2011-03-08 05:33:16

+0

@Andrew Thompson:我可以分享我的libastral源代码:) – 2011-03-08 05:43:48

回答

1

我猜你的代码看起来是这样的:

dialog.pack(); 
dialog.setVisible(true); 
dialog.add(someComponent); 

的代码应该是:

dialog.add(someComponent); 
dialog.pack(); 
dialog.setVisible(true); 

这是你需要的组件,然后才使其可见添加到对话。

+0

是的!这是错误....我以前在JComponents的初始化之前放置了pack()...谢谢 – 2011-03-08 09:39:04

1

有几件事情,可能会导致这样的:你改变你的组件后尝试在内容窗格中调用revalidate()repaint()

什么是错的与您使用的布局管理器。并确保您对Swing Event Dispatch线程中的所有组件进行更改。您可以拨打SwingUtitlites.invokeLater()来完成。

如果你在一个带有compiz的Linux机器上,java有时会无法重新绘制帧。这是一个只有部分修复的旧bug。尝试使用metacity,看看你是否可以重现这个问题。

+0

我在Linux上Ubuntu – 2011-03-08 05:55:00

+0

你不应该使用doLayout()。如果将组件添加到可见的GUI中,则可以在面板上使用revalidate()。 – camickr 2011-03-08 06:13:47

+0

@camickr:固定,谢谢。 – 2011-03-08 07:35:29