【问题标题】:Java Swing - CardLayout, how to 'update' cards while running?Java Swing - CardLayout,如何在运行时“更新”卡片?
【发布时间】:2011-07-14 03:24:44
【问题描述】:

我在 . Java Swing,并且正在为我的应用程序使用 CardLayout。在这个应用程序中,用户可以创建活动,并在另一个 JPanel 中查看现有活动。

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

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

提前致谢!

【问题讨论】:

  • 您是否在 EventDispatchThread SwingUtilities.invokeLater(...) 中添加活动?
  • 没有,我其实没有实现任何更新的方法,也不知道你的方法..

标签: java swing cardlayout


【解决方案1】:

当您将组件添加到可见 GUI 时,您需要告诉 GUI 已添加组件,以便可以调用布局管理器:

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

【讨论】:

  • 你的回答解决了我的问题!!谢谢 XD 我一直在努力解决这个问题
  • 我有一个插入员工信息的面板。和另一个显示员工列表的面板。两者都在卡片布局中。插入新员工并显示员工列表的下一个面板,但员工列表未刷新。有什么建议吗?
【解决方案2】:

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

基本上,您有一个 Observer 实例,您可以将所有面板添加到该实例中。当您更新面板中的值时,您会发现观察者发生了一些变化。然后,观察者将通知他观察到的所有面板一个值已更改,并且它们将更新其值。

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

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-23
    • 2012-10-20
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多