2014-10-29 67 views
1

我实现了一个JTree,我需要获取选定节点的索引。以插入的顺序获取选定的JTree节点索引

我试着用这个代码来获取指数:

tree.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent e) { 

      // This code to get selected index of node 
      int[] selectionRows = tree.getSelectionRows(); 
     } 
    }); 

但方法getSelectionRows返回取决于如果一些节点被collpased或扩展型动物的结果。例如:

这是我的树:

enter image description here

如果我选择一个节点,就像照片后,getSelectionRows返回数字4

enter image description here

但是,如果某个节点被折叠后,像图片之后,getSelectionRows返回3.

我需要thats alwa ys返回4,那就是索引的数量按照节点的顺序被插入。

谢谢。

enter image description here

回答

2

如果你想跟踪插入顺序,这个怎么样?

public class MyTreeModel extends DefaultTreeModel { 
    int nodeNum = 0; 
    Map<MutableTreeNode,Integer> nodeOrder = ...; 

    public void insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index) { 
    nodeOrder.put(newChild, nodeNum++); 
    super.insertNodeInto(newChild, parent, index); 
    } 
} 
+0

感谢您的帮助,如何使用此映射获取选定的节点索引? – computered 2014-10-29 18:17:52

+0

如果你有选定的节点,你可以做“int index = nodeOrder.get(selectedNode);” – ControlAltDel 2014-10-29 18:26:27

+0

而这个变量selectedNode,我在哪里得到的价值? – computered 2014-10-29 18:33:13