【发布时间】:2011-12-27 15:55:06
【问题描述】:
我的一个类返回一个 JPanel,它是由其他类添加到 JFrame 上的。 JPanel 包含一个 JTree 和一些按钮。在某些事件中,面板会再次创建并返回到 JFrame。
我的问题是我必须再次将 JPanel 添加到 JFrame 的容器中,然后调整框架的大小以使更改可见。我不知道如何在不调整大小的情况下更新框架。我尝试删除旧对象并添加更新的对象,但仍然不起作用。
处理此问题的最佳方法是什么?理想情况下,我会引用 JPanel,当 JPanel 更改时,框架也会更新。
【问题讨论】:
-
容器好像没有那个方法。你的意思不是 invalidate() 对吗?
-
JTree 变化的内容听起来你的树模型实现是无效的,因为它没有通知它的听众关于变化/s
-
@maple_shaft revalidate 仅在添加/删除组件后才需要,而不是在模型更改或更改组件属性时需要
-
似乎正在发生变化,但在不同的层或其他东西上(如果我调整窗口大小我可以看到它们)即使没有重新绘制。所以问题是如何删除旧窗格
-
你所看到的清楚地表明了我的猜测:你的 model 没有通知它的听众。解决这个问题,一切都会好起来的:-)