簡體   English   中英

Java Swing revalidate()和repaint()問題

[英]Java Swing revalidate() and repaint() problem

我有一個小的java桌面應用程序,需要能夠分別單擊“+”和“ - ”按鈕動態添加和刪除字段。 我通過調用revalidate()然后在所有父容器上重繪()一直到ActionListener中的JFrame來實現這一點。

這似乎已經成功,但偶爾它不起作用,JPanels沒有正確調整大小。 這種情況很少發生並且看似隨意,讓我相信這可能是一個並發問題。 我已經嘗試從事件派發線程啟動父容器,但這還沒有解決問題。

這實際上是一個並發問題還是我在錯誤的樹上咆哮? 任何人都知道發生了什么以及如何解決這個問題?

非常感激

-SwingNoob

OP的問題不是很好的例子 ,OP的問題可能是關於LayoutManager和OP代碼中未知的問題

1 /如果你向Container添加一個新的JComponent,那么你必須調用

validate();
repaint(); //lay with LayoutManager required that 

2 /如果刪除然后從容器中添加JComponents然后你必須調用

revalidate();
repaint(); // lay with LayoutManager required that 

3 /看起來像重新驗證覆蓋驗證,

從AWT / EDT線程啟動容器是不夠的。

您需要在AWT / EDT線程上對容器執行每個布局更改。

因此,如果您確保以這種方式完成添加和刪除,則不需要revalidate()或repaint()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM