JTree右键菜单实现编辑、添加、删除节点
2010-12-15 20:42
671 查看
JTree右键菜单实现编辑、添加、删除节点
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class Test extends JFrame implements MouseListener {
JTree tree;
JPopupMenu popMenu; //菜单
JMenuItem addItem; //各个菜单项
JMenuItem delItem;
JMenuItem editItem;
public Test() {
tree = new JTree();
tree.setEditable(true);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addMouseListener(this);
tree.setCellEditor(new DefaultTreeCellEditor(tree,
new DefaultTreeCellRenderer()));
getContentPane().add(tree);
setSize(200, 200);
//添加菜单项以及为菜单项添加事件
popMenu = new JPopupMenu();
addItem = new JMenuItem("添加");
addItem.addActionListener(this);
delItem = new JMenuItem("删除");
delItem.addActionListener(this);
editItem = new JMenuItem("修改");
editItem.addActionListener(this);
popMenu.add(addItem);
popMenu.add(delItem);
popMenu.add(editItem);
getContentPane().add(new JScrollPane(tree));
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
TreePath path = tree.getPathForLocation(e.getX(), e.getY()); // 关键是这个方法的使用
if (path == null) { //JTree上没有任何项被选中
return;
}
tree.setSelectionPath(path);
if (e.getButton() == 3) {
popMenu.show(tree, e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
}
//弹出菜单的事件处理程序(需要实现ActionListener接口)
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent(); //获得右键选中的节点
if (e.getSource() == addItem) {
((DefaultTreeModel) tree.getModel()).insertNodeInto(
new DefaultMutableTreeNode("Test"), node, node
.getChildCount());
tree.expandPath(tree.getSelectionPath());
} else if (e.getSource() == delItem) {
if (node.isRoot()) {
return;
}
((DefaultTreeModel) tree.getModel()).removeNodeFromParent(node);
} else if (e.getSource() == editItem) {
tree.startEditingAtPath(tree.getSelectionPath());
}
}
public static void main(String[] args) {
Test frame = new Test();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeCellEditor;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
public class Test extends JFrame implements MouseListener {
JTree tree;
JPopupMenu popMenu; //菜单
JMenuItem addItem; //各个菜单项
JMenuItem delItem;
JMenuItem editItem;
public Test() {
tree = new JTree();
tree.setEditable(true);
tree.getSelectionModel().setSelectionMode(
TreeSelectionModel.SINGLE_TREE_SELECTION);
tree.addMouseListener(this);
tree.setCellEditor(new DefaultTreeCellEditor(tree,
new DefaultTreeCellRenderer()));
getContentPane().add(tree);
setSize(200, 200);
//添加菜单项以及为菜单项添加事件
popMenu = new JPopupMenu();
addItem = new JMenuItem("添加");
addItem.addActionListener(this);
delItem = new JMenuItem("删除");
delItem.addActionListener(this);
editItem = new JMenuItem("修改");
editItem.addActionListener(this);
popMenu.add(addItem);
popMenu.add(delItem);
popMenu.add(editItem);
getContentPane().add(new JScrollPane(tree));
}
public void mouseClicked(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void mousePressed(MouseEvent e) {
TreePath path = tree.getPathForLocation(e.getX(), e.getY()); // 关键是这个方法的使用
if (path == null) { //JTree上没有任何项被选中
return;
}
tree.setSelectionPath(path);
if (e.getButton() == 3) {
popMenu.show(tree, e.getX(), e.getY());
}
}
public void mouseReleased(MouseEvent e) {
}
//弹出菜单的事件处理程序(需要实现ActionListener接口)
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree
.getLastSelectedPathComponent(); //获得右键选中的节点
if (e.getSource() == addItem) {
((DefaultTreeModel) tree.getModel()).insertNodeInto(
new DefaultMutableTreeNode("Test"), node, node
.getChildCount());
tree.expandPath(tree.getSelectionPath());
} else if (e.getSource() == delItem) {
if (node.isRoot()) {
return;
}
((DefaultTreeModel) tree.getModel()).removeNodeFromParent(node);
} else if (e.getSource() == editItem) {
tree.startEditingAtPath(tree.getSelectionPath());
}
}
public static void main(String[] args) {
Test frame = new Test();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
相关文章推荐
- [Asp.net]Calendar+JqueryUi实现日程管理(右键菜单,添加,编辑,删除,源码)
- Ztree树形菜单实现动态初始化、添加、删除、修改节点
- JTree 编辑、删除、添加节点
- JTree 编辑、删除、添加节点
- FckEditor添加右键菜单;增加编辑区右键图片删除功能(asp.net )(一)
- FckEditor添加右键菜单;增加编辑区右键图片删除功能(asp.net )
- FckEditor添加右键菜单;增加编辑区右键图片删除功能(asp.net )(二)
- JTree 编辑、删除、添加节点
- jTree 添加、编辑、删除节点
- 利用DhtmlXtree实现展现,修改,添加,删除,移动功能一棵树上实现,iframe的单个滑动条显示,包含在iframe中树节点中文内容过长问题解决
- 单链表的java语言完整实现含添加删除节点
- MVVM范例:实现 用户列表绑定、编辑 、删除、添加及筛选功能
- 在Windows注册表中添加右键菜单删除CVS Folds的选项
- java实现的可以无限级别添加子节点的菜单树
- 百度地图给多个marker添加右键菜单(删除、更新)
- 为TreeView的节点添加右键菜单(Add ContextMenu to ASP.NET TreeView)
- JTree 添加删除节点
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- 《ArcGIS Engine+C#实例开发教程》第六讲 右键菜单添加与实现
- python实现应用程序在右键菜单中添加打开方式功能