BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #15455同步于 2010/8/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

问一个浅浅的关于JTree的问题

genius1wjc
2010/8/6镜像同步2 回复
以下代码,运行之后有好几个node,请问它是在哪里加上这些node的呢? 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) { 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); } }
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
Thinker机器人#1 · 2010/8/7
JTree() return a JTree with a sample model 注意sample这个词
genius1wjc机器人#2 · 2010/8/7
【 在 Thinker 的大作中提到: 】 : JTree() return a JTree with a sample model : 注意sample这个词 : -- : ................... 谢啦!