From 89cca6d0e1c1ea49a885838813e48bf376cac2ea Mon Sep 17 00:00:00 2001 From: Alan473 <1109658180@qq.com> Date: Sat, 18 Nov 2023 20:15:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E4=BA=86=E7=BB=9D=E5=AF=B9?= =?UTF-8?q?=E8=B7=AF=E5=BE=84=E5=B1=9E=E6=80=A7=EF=BC=8C=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/src/Data/File.java | 13 +------- main/src/controller/MainController.java | 2 +- main/src/operations/createFileOperations.java | 18 +++++++---- main/src/operations/renameOperations.java | 5 +++ main/src/util/GetFileAbsolutePath.java | 32 +++++++++++++++++++ 5 files changed, 50 insertions(+), 20 deletions(-) create mode 100644 main/src/operations/renameOperations.java create mode 100644 main/src/util/GetFileAbsolutePath.java diff --git a/main/src/Data/File.java b/main/src/Data/File.java index 5e1ec8a..131e713 100644 --- a/main/src/Data/File.java +++ b/main/src/Data/File.java @@ -10,7 +10,6 @@ public class File implements Serializable { boolean isSystemFile; //是否系统文件 boolean isNormalFile; //是否普通文件 boolean isFolder; //是否文件夹 - private String absolutePath;//文件的绝对路径 private String fileName;//文件名 private int diskStartNum;//磁盘起始地址 private File parent;//父目录 @@ -22,16 +21,14 @@ public class File implements Serializable { private String content;//文件内容; List childrenFile;//子文件或子目录 - public File(boolean isReadOnly, boolean isSystemFile, boolean isNormalFile, boolean isFolder, String absolutePath, String fileName, File parent,Path path) { + public File(boolean isReadOnly, boolean isSystemFile, boolean isNormalFile, boolean isFolder, String fileName, File parent) { this.isReadOnly = isReadOnly; this.isSystemFile = isSystemFile; this.isNormalFile = isNormalFile; this.isFolder = isFolder; - this.absolutePath = absolutePath; this.fileName = fileName; this.parent = parent; isOpen = false; - this.path = path; if(isFolder == true){ childrenFile = new ArrayList<>(); } @@ -69,14 +66,6 @@ public class File implements Serializable { isFolder = folder; } - public String getAbsolutePath() { - return absolutePath; - } - - public void setAbsolutePath(String absolutePath) { - this.absolutePath = absolutePath; - } - public String getFileName() { return fileName; } diff --git a/main/src/controller/MainController.java b/main/src/controller/MainController.java index f28ec78..5cc6c22 100644 --- a/main/src/controller/MainController.java +++ b/main/src/controller/MainController.java @@ -127,7 +127,7 @@ public class MainController { currentPath = rootPath; contextMenuInit(); menuItemAction(); - rootFile = new File(false,true,false,true,"c:","c:",null,rootPath); + rootFile = new File(false,true,false,true,"c:",null); currentFile = rootFile; fileExplorer.setAlignment(Pos.TOP_LEFT); fileExplorer.setHgap(15); diff --git a/main/src/operations/createFileOperations.java b/main/src/operations/createFileOperations.java index f85b3de..39fb350 100644 --- a/main/src/operations/createFileOperations.java +++ b/main/src/operations/createFileOperations.java @@ -13,6 +13,7 @@ import javafx.scene.input.MouseButton; import javafx.scene.input.MouseEvent; import javafx.scene.layout.FlowPane; import util.FindLabelToFile; +import util.GetFileAbsolutePath; import util.RandomStr; @@ -25,10 +26,9 @@ import static controller.MainController.rootFile; public class createFileOperations { public static void createFile(FlowPane flowPane, Map icons, ContextMenu actionContextMenu){ String rdStr = RandomStr.getRandomString(5); - Path newPath = new Path(currentFile.getAbsolutePath()+"新建文件"+rdStr,currentFile.getPath()); - File file = new File(true,false,true,false,currentFile.getAbsolutePath()+"\\新建文件"+rdStr,"新建文件"+rdStr,currentFile,newPath); +// Path newPath = new Path(currentFile.getAbsolutePath()+"新建文件"+rdStr,currentFile.getPath()); + File file = new File(true,false,true,false,"新建文件"+rdStr,currentFile); System.out.println("创建文件"); - Label icon = new Label(file.getFileName(),new ImageView("icon/文本文件.png")); icon.setContentDisplay(ContentDisplay.TOP); icon.setWrapText(false); @@ -57,7 +57,7 @@ public class createFileOperations { flowPane.getChildren().add(icon); currentFile.getChildrenFile().add(file); - currentFile.getPath().getChildren().add(newPath); +// currentFile.getPath().getChildren().add(newPath); icon.setOnMouseEntered(new EventHandler() { @@ -102,6 +102,10 @@ public class createFileOperations { } deleteOperations.deleteFile(flowPane, icons, deleteFile); }); + actionContextMenu.getItems().get(2).setOnAction(ActionEvent -> { + currentFile = FindLabelToFile.findFile(icons, src); + + }); actionContextMenu.show(src, event.getScreenX(), event.getScreenY()); } else if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) { System.out.println("打开文件"); @@ -117,8 +121,8 @@ public class createFileOperations { public static void createFolder(FlowPane flowPane, /*File currentFile,*/ Map icons, ContextMenu actionContextMenu){ String rdStr = RandomStr.getRandomString(5); - Path newPath = new Path(currentFile.getAbsolutePath()+"新建文件夹" + rdStr,currentFile.getPath()); - File file = new File(false,false,true,true,currentFile.getAbsolutePath()+"\\新建文件夹"+rdStr,"新建文件夹"+rdStr,currentFile,newPath); +// Path newPath = new Path(currentFile.getAbsolutePath()+"新建文件夹" + rdStr,currentFile.getPath()); + File file = new File(false,false,true,true,"新建文件夹"+rdStr,currentFile); System.out.println("创建文件夹"); Label icon = new Label(file.getFileName(),new ImageView("icon/文件夹.png")); icon.setContentDisplay(ContentDisplay.TOP); @@ -150,7 +154,7 @@ public class createFileOperations { } } currentFile.getChildrenFile().add(file); - currentFile.getPath().getChildren().add(newPath); +// currentFile.getPath().getChildren().add(newPath); icon.setOnMouseEntered(new EventHandler() { @Override public void handle(MouseEvent event) { diff --git a/main/src/operations/renameOperations.java b/main/src/operations/renameOperations.java new file mode 100644 index 0000000..fe8be97 --- /dev/null +++ b/main/src/operations/renameOperations.java @@ -0,0 +1,5 @@ +package operations; + +public class renameOperations { + +} diff --git a/main/src/util/GetFileAbsolutePath.java b/main/src/util/GetFileAbsolutePath.java new file mode 100644 index 0000000..0e145e9 --- /dev/null +++ b/main/src/util/GetFileAbsolutePath.java @@ -0,0 +1,32 @@ +package util; + +import Data.File; + +import java.util.Stack; + +import static controller.MainController.rootFile; + +public class GetFileAbsolutePath { + public static String getAbsPath(File file) { + if (file != null) { + Stack filePath = new Stack<>(); + if (file != rootFile) { + File tmpFile = file; + while (tmpFile != rootFile) { + filePath.push(tmpFile.getFileName()); + tmpFile = tmpFile.getParent(); + } + } + String fileAbsPath = "C:\\"; + while (!filePath.isEmpty()) { + if (filePath.size() == 1) { + fileAbsPath = fileAbsPath + filePath.peek(); + } else { + fileAbsPath = fileAbsPath + filePath.peek() + "\\"; + } + filePath.pop(); + } + return fileAbsPath; + } else return null; + } +} \ No newline at end of file -- Gitee