【问题标题】:JTree: How to get the path of a selected nodeJTree:如何获取选定节点的路径
【发布时间】:2012-07-15 14:51:18
【问题描述】:

有没有办法像使用类似的东西来获取 JTree 中选定节点的选定路径

String pathForNode = JTree.getLastSelectedPathComponent().getPath().toString();

【问题讨论】:

标签: java swing jtree


【解决方案1】:

     tree.addTreeSelectionListener(new TreeSelectionListener() {
        public void valueChanged(TreeSelectionEvent e) {
            TreePath treepath = e.getPath();
            System.out.println("Java: " + treepath.getLastPathComponent());
            Object elements[] = treepath.getPath();
               for (int i = 0, n = elements.length; i < n; i++) {
                   System.out.print("->" + elements[i]);

         // JOptionPane.showMessageDialog(null,"->"+elements[i]);
         //lblNewLabel.setText(">"+ elements[i]);



           value+=elements[i]+"\\";


        }



        //String x=String.valueOf(value);            
        //lblNewLabel.setText(String.valueOf(value));

        JOptionPane.showMessageDialog(null, value);


        //System.out.println(value);
        }
    });

  static String value="";    //add this just before the void main function

在 C# .net 中,它曾经很容易获得路径并且对我来说有点直观。

【讨论】:

    【解决方案2】:

    我用过这个:

        jTreeVarSelectedPath = "";
        Object[] paths = jTreeDirectorios.getSelectionPath().getPath();
        for (int i=0; i<paths.length; i++) {
            jTreeVarSelectedPath += paths[i];
            if (i+1 <paths.length ) {
                jTreeVarSelectedPath += File.separator;
            }
        }
    

    【讨论】:

    • 谢谢你。这就是为什么我真的讨厌 JTree。 getPath()getPath().toString() 方法应该这样做......
    【解决方案3】:
     tree.addTreeSelectionListener(new TreeSelectionListener() {  
        public void valueChanged(TreeSelectionEvent e) {  
           TreePath tp = e.getNewLeadSelectionPath();  
           if (tp != null) {
              pathForNode = tp.getLastPathComponent();  
           }
        }  
     });
    

    http://www.coderanch.com/t/453540/GUI/java/Getting-path-file-selected-JTree

    编辑:

    试试

      tree.addMouseListener(new MouseAdapter() {
          public void mouseClicked(MouseEvent me) {
            doMouseClicked(me);
          }
        });
      }
    
      void doMouseClicked(MouseEvent me) {
        TreePath tp = tree.getPathForLocation(me.getX(), me.getY());
        if (tp != null) {
          System.out.println(tp.toString());
        }
      }
    

    JTree path

    【讨论】:

    • 这似乎只适用于我第一次点击 JTree,这不适用于其余的点击...你知道为什么吗?
    • 如果您重新初始化树,这将工作一次。随意发布您的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 2013-01-01
    • 2012-07-13
    • 1970-01-01
    相关资源
    最近更新 更多