public class Test extends JFrame implements MouseListener,ActionListener {
private static final long serialVersionUID = 1L; 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);
/**
* @Title: Test.java
* @Package swing
* @Description: TODO(用一句话描述该文件做什么)
* @author youjianbo
* @date 2010-9-26 上午10:12:46
* @version V1.0
*/
package swing;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
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,ActionListener {
private static final long serialVersionUID = 1L;
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)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
if(node.isLeaf())
{
System.out.println("是叶节点");
popMenu.remove(addItem);
}else
{
popMenu.add(addItem);
}
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) {
((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);
}
}