今天在做一个swing的树型显示时候,遇到一个问题:
DefaultMutableTreeNode jTree = new DefaultMutableTreeNode (tree);
tree是我自己定义的对象。 这样做的时候 界面上显示的是引用,而不是我的名字。
终于 发现了原因:
在实体类里面要重写toString方法,DefaultMutableTreeNode 是通过userObject中的toString方法获取的显示名,于是在实体类里面加了
@Override
public String toString(){
return this.getName();
}
最后 成功了!
在JTree上点击事件的时候 通过treepath 获取node 通过node获取userObject
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
JTree tree=(JTree) e.getSource();
TreePath path=tree.getSelectionPath();
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path
.getLastPathComponent();
Tree t=(Tree) node.getUserObject();
this.area.setText(t.getId()+" "+t.getName()+"changed!");
}