当前位置: 技术问答>java相关
jTree 刷新问题!
来源: 互联网 发布时间:2015-11-09
本文导语: 我怎样刷新jTree中的内容,内容从数据库中通过DefaultMutableTreeNode(vectroot.elementAt(i))获得,现在我怎样做才能刷新jTree的内容且保留jTree原有的事件。 | 怎么会呢? 在Swing中,对于JTree,JTable等是...
我怎样刷新jTree中的内容,内容从数据库中通过DefaultMutableTreeNode(vectroot.elementAt(i))获得,现在我怎样做才能刷新jTree的内容且保留jTree原有的事件。
|
怎么会呢?
在Swing中,对于JTree,JTable等是把数据和显示以及事件分开的,
TreeModel只负责数据,不管其他。你一样可以对yourJTree增加事件监听器。
// 初始化项目树
DefaultTreeModel treeModel = treeModelConstructor.getModel();
JTree tree_ProjectsTree = new JTree(treeModel); //代码1
//JTree tree_ProjectsTree = new JTree(treeModel); //代码2
//ProjectsTree.setModel(treeModel); //代码3
tree_ProjectsTree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
tree_ProjectsTree_mouseReleased(e);
}
public void mouseClicked(MouseEvent e) {
int clickCount = e.getClickCount();
if(clickCount == 2) {
tree_ProjectsTree_mouseDoubleClicked(e);
}
}
});
代码2,3和在一块可以代替代码1。
这是我曾经写过的代码,你看一看,找点感觉吧,不过只是一部分,不能编译的。
在Swing中,对于JTree,JTable等是把数据和显示以及事件分开的,
TreeModel只负责数据,不管其他。你一样可以对yourJTree增加事件监听器。
// 初始化项目树
DefaultTreeModel treeModel = treeModelConstructor.getModel();
JTree tree_ProjectsTree = new JTree(treeModel); //代码1
//JTree tree_ProjectsTree = new JTree(treeModel); //代码2
//ProjectsTree.setModel(treeModel); //代码3
tree_ProjectsTree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
tree_ProjectsTree_mouseReleased(e);
}
public void mouseClicked(MouseEvent e) {
int clickCount = e.getClickCount();
if(clickCount == 2) {
tree_ProjectsTree_mouseDoubleClicked(e);
}
}
});
代码2,3和在一块可以代替代码1。
这是我曾经写过的代码,你看一看,找点感觉吧,不过只是一部分,不能编译的。
|
用TreeModel:
yourJTree.setModel(yourTreeModel);
改变yourTreeModel中的数据就会自动刷新
yourJTree.setModel(yourTreeModel);
改变yourTreeModel中的数据就会自动刷新
|
你肯定是在加事件之后,又重新new JTree了。
你查查是不是在你上面的代码后又重新new JTree了。
也许是你在某个方法了new JTree了。
但又在上面的代码后调用了该方法,致使tree_ProjectsTree指向了另一个新对象。
你查查是不是在你上面的代码后又重新new JTree了。
也许是你在某个方法了new JTree了。
但又在上面的代码后调用了该方法,致使tree_ProjectsTree指向了另一个新对象。
|
树模型改变会自动刷内容.
|
你在修改之后,调用JTree的一个刷新方法来刷新可能才行
|
重新设置model的方法有些问题。