From 0c8f64e94c6ae801de4efc38e2fcb2f6758c3f89 Mon Sep 17 00:00:00 2001 From: songdragon Date: Mon, 14 Aug 2023 22:13:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20#I7SVTW=20=E4=BF=AE=E5=A4=8D=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E8=81=94=E6=96=87=E4=BB=B6=E4=B8=8D=E7=AC=A6?= =?UTF-8?q?=E5=90=88=E9=A2=84=E6=9C=9F=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Interface/ControllerInterface.java | 5 +-- src/main/java/org/jcnc/jnotepad/LunchApp.java | 20 ++-------- .../controller/manager/Controller.java | 37 +++++++++++++++---- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java b/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java index ab121af..d61fef9 100644 --- a/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java +++ b/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java @@ -14,12 +14,11 @@ import java.util.List; public interface ControllerInterface { /** - * 打开关联文件并创建 TextArea + * 打开关联文件并创建 TextArea;如果没有关联文件参数,则打开默认TextArea * * @param rawParameters 原始参数列表 - * @return 创建的 TextArea */ - TextArea openAssociatedFileAndCreateTextArea(List rawParameters); + void openAssociatedFileAndCreateTextArea(List rawParameters); /** * 获取换行符处理事件处理程序 diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index 8c15be0..deb0412 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -22,7 +22,6 @@ import static org.jcnc.jnotepad.view.init.View.initTabPane; public class LunchApp extends Application { private static final ExecutorService threadPool = Executors.newCachedThreadPool(); - public static boolean isRelevance = true; Controller controller = new Controller(); @@ -51,23 +50,12 @@ public class LunchApp extends Application { initItem(); initTabPane(); - if (isRelevance) { - // 使用线程池加载关联文件并创建文本区域 - List rawParameters = getParameters().getRaw(); - threadPool.execute(() -> { - TextArea textArea = controller.openAssociatedFileAndCreateTextArea(rawParameters); - Platform.runLater(() -> updateUIWithNewTextArea(textArea)); - }); - } + // 使用线程池异步加载关联文件(如有)并创建文本区域 + threadPool.execute(() -> { + controller.openAssociatedFileAndCreateTextArea(getParameters().getRaw()); + }); } - private void updateUIWithNewTextArea(TextArea textArea) { - Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex)); - tab.setContent(textArea); - ViewManager.tabPane.getTabs().add(tab); - ViewManager.tabPane.getSelectionModel().select(tab); - controller.updateStatusLabel(textArea); - } @Override public void stop() { diff --git a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java index 4573fe9..b7817ad 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java +++ b/src/main/java/org/jcnc/jnotepad/controller/manager/Controller.java @@ -25,22 +25,40 @@ import java.util.List; public class Controller implements ControllerInterface { /** - * 打开关联文件并创建文本区域。 + * 打开关联文件并创建文本区域。;如果没有关联文件参数,则打开默认TextArea * - * @param rawParameters 原始参数列表 - * @return 创建的文本区域 + * @param rawParameters 原始参数列表(程序启动参数) */ @Override - public TextArea openAssociatedFileAndCreateTextArea(List rawParameters) { + public void openAssociatedFileAndCreateTextArea(List rawParameters) { if (!rawParameters.isEmpty()) { - String filePath = rawParameters.get(0); - openAssociatedFile(filePath); + // 程序启动参数存在,打开第一个参数指向的文件 + openAssociatedFile(rawParameters.get(0)); + return; } + openDefaultTextArea(); + } + + /** + * 打开默认的文本区域 + */ + private void openDefaultTextArea() { TextArea textArea = createNewTextArea(); configureTextArea(textArea); + Platform.runLater(() -> updateUIWithDefaultNewTextArea(textArea)); + } - return textArea; + /** + * 是用指定文本区域更新UI + * @param textArea 指定的文本区域 + */ + private void updateUIWithDefaultNewTextArea(TextArea textArea) { + Tab tab = new Tab("新建文件 " + (++ViewManager.tabIndex)); + tab.setContent(textArea); + ViewManager.tabPane.getTabs().add(tab); + ViewManager.tabPane.getSelectionModel().select(tab); + this.updateStatusLabel(textArea); } /** @@ -123,6 +141,7 @@ public class Controller implements ControllerInterface { /** * 打开关联文件。 + * 如果文件不存在,则打开默认文件区域 * * @param filePath 文件路径 */ @@ -130,9 +149,11 @@ public class Controller implements ControllerInterface { public void openAssociatedFile(String filePath) { File file = new File(filePath); if (file.exists() && file.isFile()) { - LunchApp.isRelevance = false; openFile(file); + return; } + //文件不存在,打开默认文本区域 + openDefaultTextArea(); } /** -- Gitee