@Override public void mouseClicked(MouseEvent e) { int clickedIndex = table.getSelectedRow(); // 获取鼠标点击的行数 if (clickedIndex >= 0) { EditSelectAll.setEnabled(true); SelectAll.setEnabled(true); isTable = true; currentfile = tablemodel.getFile(clickedIndex); addressText.setText(currentfile.getAbsolutePath()); // 地址栏显示路径 if (!currentnode.getFile().getName().equals(fsv.getHomeDirectory())) { FileDelete.setEnabled(true); Delete.setEnabled(true); } } if (e.getClickCount() >= 2) { EditSelectAll.setEnabled(true); SelectAll.setEnabled(true); if (currentfile.isDirectory()) // 当单击的是目录 { try { upbtn.setEnabled(true); if (!tree.isExpanded(currentPath)) tree.expandPath(currentPath); // 将树中对应的节点打开 if (currentnode.getChildCount() > 0) { for (int i = 0; i < currentnode.getChildCount(); i++) { FileTreeNode temp = (FileTreeNode) currentnode.getChildAt(i); // 返回currentNode的子节点数组中指定索引处的子节点。 if (temp.GetFile() .getPath() .equalsIgnoreCase(currentfile.getPath())) // 判断子节点路径是否等于列表中选的的路径 { TreeNode[] nodes = treemodel.getPathToRoot(temp); // 获取从根节点到 temp的路径 currentPath = new TreePath(nodes); tree.setSelectionPath(currentPath); // 选择子节点的父节点 break; } } } } catch (Exception ee) { ee.printStackTrace(); } } if (currentfile.isFile()) { Runtime ce = Runtime.getRuntime(); String Temp = new String(currentfile.getAbsolutePath()); String cmdarray = "cmd /c start " + Temp; try { ce.exec(cmdarray); } catch (IOException e1) { e1.printStackTrace(); } } } else if (e.getButton() == e.BUTTON3) { popup.show(e.getComponent(), e.getX(), e.getY()); } }
@Override public void valueChanged(TreeSelectionEvent e) { // TODO Auto-generated method stub try { currentPath = tree.getSelectionPath(); currentnode = (FileTreeNode) e.getPath().getLastPathComponent(); currentfile = currentnode.GetFile(); tree.scrollPathToVisible(currentPath); // 确保路径中所有的路径组件均展开(最后一个路径组件除外)并滚动,以便显示curpath路径标识的节点 addressText.setText(currentnode.GetFile().getAbsolutePath()); // 将点击的节点的路径在地址栏中显示出来 isTable = false; if (!currentfile.getName().equals("Desktop")) { Vector files = treeview.GetAll(currentnode.GetFile()); // 获取点击节点下的所有文件 tablemodel.addAllFiles(files); // 将这些文件加到列表中 upbtn.setEnabled(true); FileNewFolder.setEnabled(true); NewFolder.setEnabled(true); FileNewFile.setEnabled(true); FileNature.setEnabled(true); FileRename.setEnabled(true); EditCut.setEnabled(true); EditCopy.setEnabled(true); EditPaste.setEnabled(true); NewFile.setEnabled(true); Nature.setEnabled(true); Rename.setEnabled(true); Cut.setEnabled(true); Copy.setEnabled(true); Paste.setEnabled(true); if (!(currentnode.getParent().toString()).equals(File.listRoots()) && (currentnode.toString() != "网络") && (currentnode.toString() != "库") && (currentnode.toString() != "家庭组")) // 不是根节点 { FileDelete.setEnabled(true); Delete.setEnabled(true); } else { FileDelete.setEnabled(false); Delete.setEnabled(true); } } else { downbtn.setEnabled(false); upbtn.setEnabled(false); FileNewFolder.setEnabled(false); // 菜单栏中的菜单选项 FileNewFile.setEnabled(false); FileNature.setEnabled(false); FileRename.setEnabled(false); FileDelete.setEnabled(false); EditCut.setEnabled(false); EditCopy.setEnabled(false); NewFolder.setEnabled(false); // 右键菜单中的菜单选项 NewFile.setEnabled(false); Nature.setEnabled(false); Rename.setEnabled(false); Delete.setEnabled(false); Cut.setEnabled(false); Copy.setEnabled(false); currentnode = (TreeNode) treemodel.getRoot(); tablemodel.addAllFiles(treeview.GetRoot()); } } catch (Exception ee) { JOptionPane.showMessageDialog(null, "读取文件错误!", "Error", JOptionPane.ERROR_MESSAGE); ee.printStackTrace(); } }