diff --git a/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java b/src/main/java/org/jcnc/jnotepad/Interface/ControllerInterface.java index ab121af3547652d312bd4baa5f6c9a57b528e2a0..d61fef9fe75eef2da7a2acb7ae25ca610770f9d4 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 8c15be0820b711f0145afd6ec58d85a1cd47a243..deb0412045925808bc55b869b91d674423209e72 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 4573fe9e78b722838d104dc0b1a639f9eb498065..b7817ad22570544c0c1f858eeedb0c9b76c9f385 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(); } /**