Java 单击树时如何从JTree获取节点路径?
我有一个包含多个节点的树,还为此创建了一个树侦听器,现在我需要在单击它时获取特定的节点路径, 我试过这个代码,但没有得到确切的输出,有人能帮我吗Java 单击树时如何从JTree获取节点路径?,java,swing,selection,jtree,Java,Swing,Selection,Jtree,我有一个包含多个节点的树,还为此创建了一个树侦听器,现在我需要在单击它时获取特定的节点路径, 我试过这个代码,但没有得到确切的输出,有人能帮我吗 public class FTListener implements TreeSelectionListener { @Override public void valueChanged(TreeSelectionEvent e) { TreePath[] tree=new TreePath[e.getNewLead
public class FTListener implements TreeSelectionListener {
@Override
public void valueChanged(TreeSelectionEvent e) {
TreePath[] tree=new TreePath[e.getNewLeadSelectionPath().getPathCount()];
int i=0;
tree=e.getPaths();
for(TreePath tr:tree){
System.out.println(tree[i]);
i++;}
//getPath() returns the array elements so i'm here using
//for loop for printing each elements.
这是输出
[/Desktop, /home/user/Desktop, /home/user/Desktop/1302677132563_USER_MANUAL_SMS_BANKING.pdf]
[/Desktop, /home/user/Desktop, /home/user/Desktop/Lab090C .java~]
这样做
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
tree.getLastSelectedPathComponent();
if (node == null) {
//since Nothing is selected.
return;
}
Object nodeObject = node.getUserObject();
System.out.println("Selected node : " + nodeObject);
}
如果只需要单个选择,请添加此选项
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
这样做
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode)
tree.getLastSelectedPathComponent();
if (node == null) {
//since Nothing is selected.
return;
}
Object nodeObject = node.getUserObject();
System.out.println("Selected node : " + nodeObject);
}
如果只需要单个选择,请添加此选项
tree.getSelectionModel().setSelectionMode
(TreeSelectionModel.SINGLE_TREE_SELECTION);
为什么强制转换为
DefaultMutableTreeNode
?使用您自己的对象创建JTree
是完全可能的。@Robin我认为DefaultMutableXxx
是一个优势,但我同意反对重新发明轮子
@mKorbel我同意在很多情况下重用DefaultMutableTreeNode
。但对于这个问题,没有任何迹象表明他/她正在使用DefaultMutableTreeNode
实例,这使得这个答案太具体了。@Robin我同意,如果他使用对象作为treeNode,tree.getLastSelectedPathComponent().toString()就足够了。为什么要转换为DefaultMutableTreeNode
?使用您自己的对象创建JTree
是完全可能的。@Robin我认为DefaultMutableXxx
是一个优势,但我同意反对重新发明轮子
@mKorbel我同意在很多情况下重用DefaultMutableTreeNode
。但是对于这个问题,没有任何迹象表明他正在使用DefaultMutableTreeNode
实例,这使得这个答案太具体了。@Robin我同意,如果他使用对象作为treeNode,tree.getLastSelectedPathComponent().toString()就足够了。有什么问题吗?你选择了两条路径,它们都被打印出来,正如你所编码的:-)@kleopatra好消息是,一台电脑仍然完全按照我们所编码的那样工作。我会开始担心其他问题有什么问题?你选择了两条路径,它们都被打印出来,正如你所编码的:-)@kleopatra好消息是,一台电脑仍然完全按照我们所编码的那样工作。否则我会开始担心