//右键点击事件 jPopupMenu = new JPopupMenu();
JMenuItem item1 = new JMenuItem("添加子节点");
JMenuItem item2 = new JMenuItem("编辑节点");
JMenuItem item3 = new JMenuItem("删除节点"); jPopupMenu.add(item1);
jPopupMenu.add(item2);
jPopupMenu.add(item3); item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
addNode();
}
});
tree.add(jPopupMenu);
tree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent er) {
try {
//是否右键单击
if (er.getClickCount() == 1 && SwingUtilities.isRightMouseButton(er)) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
tree.setSelectionPath(path);
jPopupMenu.show(tree, er.getX(), er.getY());
} else if (er.getClickCount() == 1) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
if (tree.isExpanded(path)) {
tree.collapsePath(path);
}
else {
tree.expandPath(path);
}
return;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
});
JMenuItem item1 = new JMenuItem("添加子节点");
JMenuItem item2 = new JMenuItem("编辑节点");
JMenuItem item3 = new JMenuItem("删除节点"); jPopupMenu.add(item1);
jPopupMenu.add(item2);
jPopupMenu.add(item3); item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
addNode();
}
});
tree.add(jPopupMenu);
tree.addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent er) {
try {
//是否右键单击
if (er.getClickCount() == 1 && SwingUtilities.isRightMouseButton(er)) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
tree.setSelectionPath(path);
jPopupMenu.show(tree, er.getX(), er.getY());
} else if (er.getClickCount() == 1) {
TreePath path = tree.getPathForLocation(er.getX(), er.getY());
if (path == null)
return;
if (tree.isExpanded(path)) {
tree.collapsePath(path);
}
else {
tree.expandPath(path);
}
return;
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
});
public TreePath getPathForLocation(int x, int y) {
这个方法可以判断电机的地方是不是属于一个节点的。