【问题标题】:Get selected JTree node index in inserted order按插入顺序获取选定的 JTree 节点索引
【发布时间】:2014-12-25 13:33:44
【问题描述】:

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

我正在尝试使用此代码获取索引:

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

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

但是 getSelectionRows 方法会返回不同的结果,具体取决于某些节点是折叠还是展开。例如:

这是我的树:

如果我选择一个节点,如下图,getSelectionRows 返回数字 4。

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

我需要总是返回 4,这是按节点插入顺序排列的索引号。

谢谢。

【问题讨论】:

    标签: java swing indexing tree jtree


    【解决方案1】:

    如果您尝试跟踪广告订单,该怎么做?

    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);
      } 
    }
    

    【讨论】:

    • 感谢帮助,请问如何使用这张图获取选中的节点索引?
    • 如果你有选中的节点,你可以做"int index = nodeOrder.get(selectedNode);"
    • 还有这个变量selectedNode,我从哪里得到值?
    • tree.getLeadSelectionPath().getLastPathComponent();
    • 这个方法 insertNodeInto 永远不会执行......我创建了一个这样的 Jtree:model = new MyTreeModel(root);树 = 新的 JTree(模型);并插入这样的元素:root.add(new DefaultMutableTreeNode(element))
    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 2023-03-30
    • 2012-07-15
    • 2015-01-13
    • 2012-03-31
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多