使用JTree增加,删除,和重命名节点完整实例(二)

2014-11-24 09:21:54 · 作者: · 浏览: 6
abel.insets = new Insets(0, 0, 5, 5); gbc_lblNewLabel.gridx = 0; gbc_lblNewLabel.gridy = 0; add(lblNewLabel, gbc_lblNewLabel); JButton saveDirsOprBt = new JButton( "\u4FDD\u5B58\u76EE\u5F55\u64CD\u4F5C"); GridBagConstraints gbc_saveDirsOprBt = new GridBagConstraints(); gbc_saveDirsOprBt.insets = new Insets(0, 0, 5, 5); gbc_saveDirsOprBt.gridx = 5; gbc_saveDirsOprBt.gridy = 0; add(saveDirsOprBt, gbc_saveDirsOprBt); saveDirsOprBt.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String title = "注意!"; String message = "是否确定保存对目录的修改!"; int messageType = JOptionPane.INFORMATION_MESSAGE; int result = JOptionPane.showConfirmDialog(mainPanel, message, title, JOptionPane.YES_NO_OPTION, messageType); if (result == JOptionPane.YES_OPTION) { System.out.println("Yes"); logger.debug("用户确定了对目录的修改!"); DocsMgtRmi.getINS().saveDirChanged(dirsList); } } }); JScrollPane scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.gridwidth = 7; gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 0; gbc_scrollPane.gridy = 1; add(scrollPane, gbc_scrollPane); VEachDir rootDir = new VEachDir(0, "/", 0, 123); rootNode = new DefaultMutableTreeNode(rootDir); createNodes(rootNode); treeModel = new DocTreeModel(rootNode); treeModel.addTreeModelListener(new DocTreeModelListener()); tree = new JTree(treeModel); tree.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION); scrollPane.setViewportView(tree); tree.setEditable(true); tree.setDragEnabled(true); tree.setTransferHandler(new DocsTreeTransferHanlder(dirsList)); setPopupMenu(); } private void createNodes(DefaultMutableTreeNode top) { List
nodes = DocsMgtRmi.getINS() .getFirstLevelDirs(); for (DefaultMutableTreeNode one : nodes) { top.add(one); } } public DefaultMutableTreeNode getSelectedNode() { return (DefaultMutableTreeNode) tree.getLastSelectedPathComponent(); } public void setPopupMenu() { final JPopupMenu pop = new JPopupMenu(); pop.add(new AbstractAction("添加子目录") { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { System.out.println("Tree Add"); VEachDir newDir = new VEachDir(0, "新的目录", 0, 123); DefaultMutableTreeNode newNode = new DefaultMutableTreeNode( newDir); addObject(newDir); } }); pop.add(new AbstractAction("删除目录") { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { System.out.println("Delete"); removeCurrentNode(); } }); pop.add(new AbstractAction("重命名") { private static final long serialVersionUID = 1L; public void actionPerformed(ActionEvent e) { TreePath path = tree.getSelectionPath(); tree.startEditingAtPath(path); } }); tree.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { if (e.isMetaDown()) { pop.show(tree, e.getX(), e.getY()); } } public void mouseClicked(MouseEvent evt) { if (evt.getClickCount() == 1) { SwingUtilities.invokeLater(new Runnable() { public void run() { mainPanel.selectOn