2011-05-25 66 views
0

我想知道如何在運行時將項目插入到BoxLayout中......或者使用不同的小部件/面板/佈局來實現類似的效果。在運行時將項目插入BoxLayout?

應用程序窗口的設計是將多個面板垂直堆疊(BoxLayout.Y_AXIS)。然後,用戶可以插入或刪除面板,也可以與面板內的任何小部件進行交互。我希望將它綁定到一個可觀察的列表中,其中代表每個面板類型的類被插入,並且相應地更新UI。

謝謝你的指點!

回答

1

javax.swing.SwingUtilities將允許您在event dispatcher thread (EDT)中執行操作 - 更新UI的所有操作都必須在EDT中執行。在將組件添加到要添加組件的容器上之後,還可以毫不猶豫地調用revalidate()repaint()方法,這樣可以使父組件重新計算所有元素(包括新元素)的位置並重繪本身。

+0

爲了做到這一點,我需要在面板上設置我自己的Observer/Listener,並在每次看到代表面板順序的列表中發生更改時重新構建面板,然後重新驗證/重新繪製。正確?這似乎代價高昂(或者我知道我不會最佳地設計它)。我的手指越過了一個很好的可以綁定的元素來爲我做魔法。 =) – 2011-05-26 16:46:44