java吧 关注:1,267,929贴子:12,772,284
  • 6回复贴,共1

JTree右击怎么获取触发事件的节点名称呢?

只看楼主收藏回复

import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class GUI1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
new jui();
}
}
class jui {
public jui(){
JFrame jf1=new JFrame("窗口");
DefaultMutableTreeNode dt1=new DefaultMutableTreeNode("国防部");
DefaultMutableTreeNode dt2=new DefaultMutableTreeNode("教育部");
DefaultMutableTreeNode dt3=new DefaultMutableTreeNode("财务部");
dt1.add(new DefaultMutableTreeNode("空军"));
dt1.add(new DefaultMutableTreeNode("陆军"));
dt1.add(new DefaultMutableTreeNode("海军"));
dt2.add(new DefaultMutableTreeNode("大学"));
dt2.add(new DefaultMutableTreeNode("高中"));
dt2.add(new DefaultMutableTreeNode("初中"));
dt3.add(new DefaultMutableTreeNode("省级财务"));
dt3.add(new DefaultMutableTreeNode("市级财务"));
dt3.add(new DefaultMutableTreeNode("县级财务"));
DefaultMutableTreeNode de=new DefaultMutableTreeNode("国家");
de.add(dt1);
de.add(dt2);
de.add(dt3);
JTree jTree=new JTree(de);
jf1.add(jTree);
jf1.setLayout(new FlowLayout());
jf1.setBounds(500, 500, 800, 500);
jf1.setVisible(true);
jf1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jTree.addTreeSelectionListener(new TreeSelectionListener() {
@Override
//点击事件处理
public void valueChanged(TreeSelectionEvent e) {
System.out.println("左击事件触发"+jTree.getLastSelectedPathComponent().toString());
}
});
jTree.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.getButton() == e.BUTTON3) { //BUTTON3是鼠标右键
//显示触发事件的节点名称
}
}
});
}
}
在网上找了好久都没有具体解决办法啊 求大神指点


IP属地:河南1楼2018-01-06 11:39回复
    急,在线等


    IP属地:河南2楼2018-01-06 11:40
    回复
      2025-07-06 11:12:00
      广告
      .........................................................


      IP属地:河南3楼2018-01-06 11:43
      回复
        还请诸位多帮忙


        IP属地:河南4楼2018-01-06 12:04
        回复
          你右键的这种我没做过,jtree选中事件倒是做过的,下面贴上源代码,node就是获取到的节点名称


          IP属地:辽宁5楼2018-08-15 08:59
          回复
            /*
            * 节点被选中的监听器
            */
            tree.addTreeSelectionListener(new TreeSelectionListener() {
            @Override
            public void valueChanged(TreeSelectionEvent e) {
            JTree tree = (JTree)e.getSource();
            DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
            if(node!=null){
            jTree_valueChanged(node);
            }
            }
            public void jTree_valueChanged(DefaultMutableTreeNode node) {
            if(node.getChildCount()!=0){
            try {
            initTabel(node);
            } catch (Exception e1) {
            e1.printStackTrace();
            }
            }
            }


            IP属地:辽宁6楼2018-08-15 09:00
            回复
              getClosestPathForLocation()试试


              IP属地:江苏来自手机贴吧7楼2020-01-03 08:59
              回复