2011-05-25 64 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