java 树 右键菜单_JTree右键菜单

2008-12-16 10:287010

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 classTest 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) {

return;

}

tree.setSelectionPath(path);

if (e.getButton() == 3) {

popMenu.show(tree, e.getX(), e.getY());

}

}

public void mouseReleased(MouseEvent e) {

}

public void actionPerformed(ActionEvent e) {

DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();

if (e.getSource() == addItem) {

tree.expandPath(tree.getSelectionPath());

}             else if (e.getSource() == delItem) {

if (node.isRoot()) {

((DefaultTreeModel) tree.getModel()).insertNodeInto(new DefaultMutableTreeNode("Test"), node, node.getChildCount());

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

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值