我的一个类正在返回一个JPanel,它被一些其他类添加到JFrame上。 JPanel包含一个JTree和一些按钮。在某些事件中,面板再次创建并返回到JFrame。
我的问题是我必须再次将JPanel添加到JFrame的Container中,然后调整框架大小以使更改可见。我无法确定如何在不调整大小的情况下更新帧。我尝试删除旧对象并添加更新的对象但仍然无效。
处理此问题的最佳方法是什么?理想情况下,我会引用JPanel,当JPanel更改时,框架也会更新。
答案 0 :(得分:3)
整个模型不仅改变了它的数据。我将来可能会更改它,但是现在当数据更改时,会创建一个新的JTree
然后你的代码应该是这样的:
JTree tree = new JTree( theNewModel );
scrollPane.setViewportView( tree );
那就是你需要将新的JTree添加到GUI中,你不能只是改变对树变量的引用。
或者更简单,您不需要创建新的JTree,只需使用以下命令替换现有树中的模型:
tree.setModel( theNewModel );
如果这仍然无效,那么您需要发布展示问题的SSCCE,因为您的问题仍然不明确。
答案 1 :(得分:-2)
首先尝试JFrame.invalidate()
,然后致电JFrame.validate()
http://docs.oracle.com/javase/6/docs/api/java/awt/Container.html#invalidate%28%29