当前位置: 技术问答>java相关
求助!!!JTree
来源: 互联网 发布时间:2015-02-27
本文导语: 请教各位java大师,我有一段程序: public TreeNode MakeTreeNode() { DefaultMutableTreeNode root=new DefaultMutableTreeNode("root"); DefaultMutableTreeNode country=new DefaultMutableTreeNode("China"); DefaultMutableTreeNode city=new DefaultMutabl...
请教各位java大师,我有一段程序:
public TreeNode MakeTreeNode()
{
DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");
DefaultMutableTreeNode country=new DefaultMutableTreeNode("China");
DefaultMutableTreeNode city=new DefaultMutableTreeNode("zhejiang");
root.add(country);
country.add(city);
return root;
}
public TreeNode ReMakeTreeNode()
{
DefaultMutableTreeNode root=new DefaultMutableTreeNode("aaaaa");
DefaultMutableTreeNode country=new DefaultMutableTreeNode("bbbbb");
DefaultMutableTreeNode city=new DefaultMutableTreeNode("ccccc");
root.add(country);
country.add(city);
return root;
}
void jButton1_actionPerformed(ActionEvent e) {
TreeNode node=MakeTreeNode();
DefaultTreeModel model=new DefaultTreeModel(node);
JTree jTree1=new JTree(model);
jScrollPane1.getViewport().add(jTree1, null);
}
void jButton2_actionPerformed(ActionEvent e) {
TreeNode node=ReMakeTreeNode();
DefaultTreeModel model=new DefaultTreeModel(node);
model.nodeStructureChanged(node);
model.reload(node);
}
程序用JTree,单击jButton1时,变成root,China,Zhejiang;单击jButton2时变成aaaaa,bbbbb,ccccc;可是程序
只有在第一次单击按钮jButton1时发生变化,以后不发生变化。请问大师如何修改程序。谢谢啦!
public TreeNode MakeTreeNode()
{
DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");
DefaultMutableTreeNode country=new DefaultMutableTreeNode("China");
DefaultMutableTreeNode city=new DefaultMutableTreeNode("zhejiang");
root.add(country);
country.add(city);
return root;
}
public TreeNode ReMakeTreeNode()
{
DefaultMutableTreeNode root=new DefaultMutableTreeNode("aaaaa");
DefaultMutableTreeNode country=new DefaultMutableTreeNode("bbbbb");
DefaultMutableTreeNode city=new DefaultMutableTreeNode("ccccc");
root.add(country);
country.add(city);
return root;
}
void jButton1_actionPerformed(ActionEvent e) {
TreeNode node=MakeTreeNode();
DefaultTreeModel model=new DefaultTreeModel(node);
JTree jTree1=new JTree(model);
jScrollPane1.getViewport().add(jTree1, null);
}
void jButton2_actionPerformed(ActionEvent e) {
TreeNode node=ReMakeTreeNode();
DefaultTreeModel model=new DefaultTreeModel(node);
model.nodeStructureChanged(node);
model.reload(node);
}
程序用JTree,单击jButton1时,变成root,China,Zhejiang;单击jButton2时变成aaaaa,bbbbb,ccccc;可是程序
只有在第一次单击按钮jButton1时发生变化,以后不发生变化。请问大师如何修改程序。谢谢啦!
|
首先,我建议你彻底放弃现在的做法。
按照sun的MVC开发模式,使用JTree最推荐的方法是JTree+TreeModel+TreeCellEditor+TreeCellRender...,
把数据包装在TreeModel中,用CellRender来定义数据的显示格式。否则,节点显示出来的是该节点对应的Object的toString值,而有时候我们需要一些特殊的显示,比如当前节点高亮等等。
然后,建议你调用一下JTree的updateUI()方法。通常在改变了TreeModel里面的值以后都需要调用updateUI来更新显示。
如果觉得我的回答有帮助的话,记得给分。
按照sun的MVC开发模式,使用JTree最推荐的方法是JTree+TreeModel+TreeCellEditor+TreeCellRender...,
把数据包装在TreeModel中,用CellRender来定义数据的显示格式。否则,节点显示出来的是该节点对应的Object的toString值,而有时候我们需要一些特殊的显示,比如当前节点高亮等等。
然后,建议你调用一下JTree的updateUI()方法。通常在改变了TreeModel里面的值以后都需要调用updateUI来更新显示。
如果觉得我的回答有帮助的话,记得给分。
|
看看java.sun.com 的例子。