如何更新swing组件

时间:2011-12-27 15:55:06

标签: java swing jpanel jtree

我的一个类正在返回一个JPanel,它被一些其他类添加到JFrame上。 JPanel包含一个JTree和一些按钮。在某些事件中,面板再次创建并返回到JFrame。

我的问题是我必须再次将JPanel添加到JFrame的Container中,然后调整框架大小以使更改可见。我无法确定如何在不调整大小的情况下更新帧。我尝试删除旧对象并添加更新的对象但仍然无效。

处理此问题的最佳方法是什么?理想情况下,我会引用JPanel,当JPanel更改时,框架也会更新。

2 个答案:

答案 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