2011-03-12 58 views
3

我很新。 Java Swing,以及我的应用程序使用CardLayout。在这个应用程序中,用户可以创建活动,并在另一个JPanel中查看现有的活动。Java Swing - CardLayout,如何在运行时更新卡?

我无法更新卡(标签所在的位置)。如果我添加活动,当您重新启动应用程序时,它工作正常。我正在寻找一种不需要重新启动的方式。

简而言之,我想知道在运行时我应该如何重建/更新面板,以便显示新的标签数据。

在此先感谢!

+0

你在EventDispatchThread添加活动SwingUtilities.invokeLater(...)? – u449355

+0

不,我其实并没有实施任何方式更新,我不知道你的方法.. – belens

回答

9

当你将组件添加到你需要告诉GUI一个组件已经被添加这样的布局管理器可以调用一个可视界面:

panel.add(component); 
panel.revalidate(); 
+0

你的回答解决了我的问题!谢谢XD我一直在努力奋斗这个 – belens

+0

我有一个插入员工信息的面板。另一个显示员工名单的面板,两者都在卡片布局中。插入新员工并显示下一个员工列表面板但员工列表不刷新。任何建议? –

0

这听起来像你正在寻找的是观察者设计模式。

基本上它的全部内容是您有一个Observer实例,您将所有面板添加到该实例。当你在一个面板中更新一个值时,Observer的不确定性会发生变化。然后,观察员将通知他所观察的所有小组一个值已经改变,并且他们会更新他们的价值。

http://en.wikipedia.org/wiki/Observer_pattern