2011-03-08 69 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