使用JTree增加,删除,和重命名节点完整实例(二)
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