From ab2030a0e230f83261615e2ae81c372f45292bc4 Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Sun, 27 Aug 2023 09:41:07 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D=20BUG=20?= =?UTF-8?q?=E5=BD=93=E5=88=87=E6=8D=A2=E8=AF=AD=E8=A8=80=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E4=B8=8B=E6=96=B9=E7=8A=B6=E6=80=81=E6=A0=8F=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E7=9A=84bug=EF=BC=8C=E2=9A=A1=EF=B8=8F=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=20=E5=88=87=E6=8D=A2=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/config/LocalizationConfig.java | 1 + .../jnotepad/app/init/LoadLanguageConfig.java | 2 ++ .../jcnc/jnotepad/constants/TextConstants.java | 7 ++----- .../org/jcnc/jnotepad/json/DataGenerator.java | 8 +++++++- .../java/org/jcnc/jnotepad/json/MyData.java | 6 ++---- .../java/org/jcnc/jnotepad/tool/JsonUtil.java | 3 ++- .../jcnc/jnotepad/ui/menu/JNotepadMenuBar.java | 18 +++++++++--------- .../jnotepad/ui/status/JNotepadStatusBox.java | 6 ++++++ .../jnotepad/view/manager/ViewManager.java | 6 ++++-- 9 files changed, 35 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java b/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java index 69e5706..17c7861 100644 --- a/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/config/LocalizationConfig.java @@ -200,6 +200,7 @@ public class LocalizationConfig { private String unknown; /// JNotepadStatusBox + private String row; private String column; diff --git a/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java b/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java index 026cc48..ab0808d 100644 --- a/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java +++ b/src/main/java/org/jcnc/jnotepad/app/init/LoadLanguageConfig.java @@ -3,6 +3,7 @@ package org.jcnc.jnotepad.app.init; import org.jcnc.jnotepad.app.config.LocalizationConfig; import org.jcnc.jnotepad.tool.LogUtil; import org.jcnc.jnotepad.ui.menu.JNotepadMenuBar; +import org.jcnc.jnotepad.ui.status.JNotepadStatusBox; import org.slf4j.Logger; import java.io.InputStream; @@ -37,6 +38,7 @@ public class LoadLanguageConfig extends LoadJnotepadConfig { // 刷新菜单栏 jNotepadMenuBar.initMenuBar(); jNotepadMenuBar.toggleLanguageCheck(language); + JNotepadStatusBox.getInstance().initStatusBox(); } } } diff --git a/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java b/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java index dddc94e..4242d75 100644 --- a/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java +++ b/src/main/java/org/jcnc/jnotepad/constants/TextConstants.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.node.ObjectNode; +import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.json.DataGenerator; import org.jcnc.jnotepad.json.MyData; import org.jcnc.jnotepad.tool.JsonUtil; @@ -65,10 +66,6 @@ public class TextConstants { public static final String CHINESE = "chinese"; public static final String LOWER_LANGUAGE = "language"; - - private static final String BUTTON_NAME = "buttonName"; - - private static final String SHORTCUT_KEY_VALUE = "shortcutKeyValue"; /** * 语言映射 */ @@ -86,7 +83,7 @@ public class TextConstants { try { JNOTEPAD_CONFIG = createShortcutKeyJsonString(); } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw new AppException(e); } } diff --git a/src/main/java/org/jcnc/jnotepad/json/DataGenerator.java b/src/main/java/org/jcnc/jnotepad/json/DataGenerator.java index 030a038..add2a26 100644 --- a/src/main/java/org/jcnc/jnotepad/json/DataGenerator.java +++ b/src/main/java/org/jcnc/jnotepad/json/DataGenerator.java @@ -5,9 +5,15 @@ import java.util.List; /** * 数据生成类,用于生成示例数据。 + * @author 许轲 */ public class DataGenerator { - // 快捷键常量 + + + private DataGenerator() { + } + /// 快捷键常量 + private static final String CTRL_N = "ctrl+n"; private static final String CTRL_O = "ctrl+o"; private static final String CTRL_S = "ctrl+s"; diff --git a/src/main/java/org/jcnc/jnotepad/json/MyData.java b/src/main/java/org/jcnc/jnotepad/json/MyData.java index 91d7cc8..16c767e 100644 --- a/src/main/java/org/jcnc/jnotepad/json/MyData.java +++ b/src/main/java/org/jcnc/jnotepad/json/MyData.java @@ -4,6 +4,8 @@ import java.util.List; /** * 数据模型类,用于表示 MyData 对象的数据结构。 + * + * @author 许轲 */ public class MyData { private String language; @@ -16,8 +18,6 @@ public class MyData { private String buttonName; private String shortcutKeyValue; - public ShortcutKey() {} - public String getButtonName() { return buttonName; } @@ -35,8 +35,6 @@ public class MyData { } } - public MyData() {} - public String getLanguage() { return language; } diff --git a/src/main/java/org/jcnc/jnotepad/tool/JsonUtil.java b/src/main/java/org/jcnc/jnotepad/tool/JsonUtil.java index e913999..1119123 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/JsonUtil.java +++ b/src/main/java/org/jcnc/jnotepad/tool/JsonUtil.java @@ -11,9 +11,10 @@ import org.jcnc.jnotepad.exception.AppException; * @author songdragon */ public class JsonUtil { + private JsonUtil() { + } public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper().enable(SerializationFeature.INDENT_OUTPUT); - ; public static String toJsonString(Object o) { try { diff --git a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java index a3ebb43..6ec15c9 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java +++ b/src/main/java/org/jcnc/jnotepad/ui/menu/JNotepadMenuBar.java @@ -1,9 +1,6 @@ package org.jcnc.jnotepad.ui.menu; import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import javafx.event.ActionEvent; import javafx.scene.control.*; @@ -15,7 +12,6 @@ import org.jcnc.jnotepad.controller.event.handler.*; import org.jcnc.jnotepad.exception.AppException; import org.jcnc.jnotepad.tool.JsonUtil; import org.jcnc.jnotepad.tool.LogUtil; -import org.jcnc.jnotepad.ui.status.JNotepadStatusBox; import org.jcnc.jnotepad.ui.tab.JNotepadTab; import org.jcnc.jnotepad.ui.tab.JNotepadTabPane; import org.jcnc.jnotepad.view.init.View; @@ -42,8 +38,6 @@ public class JNotepadMenuBar extends MenuBar { */ JNotepadTabPane jNotepadTabPane = JNotepadTabPane.getInstance(); - JNotepadStatusBox jNotepadStatusBox = JNotepadStatusBox.getInstance(); - private static final JNotepadMenuBar MENU_BAR = new JNotepadMenuBar(); LocalizationConfig localizationConfig = LocalizationConfig.getLocalizationConfig(); @@ -262,8 +256,9 @@ public class JNotepadMenuBar extends MenuBar { public void handle(ActionEvent actionEvent) { try { setCurrentLanguage(ENGLISH); + } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw new AppException(e.getMessage()); } } }); @@ -272,8 +267,9 @@ public class JNotepadMenuBar extends MenuBar { public void handle(ActionEvent actionEvent) { try { setCurrentLanguage(CHINESE); + } catch (JsonProcessingException e) { - throw new RuntimeException(e); + throw new AppException(e.getMessage()); } } }); @@ -286,6 +282,10 @@ public class JNotepadMenuBar extends MenuBar { * @since 2023/8/26 16:16 */ private void setCurrentLanguage(String language) throws JsonProcessingException { + // 如果当前已是该语言则不执行该方法 + if (localizationConfig.getLanguagePackName().equals(LANGUAGE_FILE_MAP.get(language))) { + return; + } boolean flag = false; // 获取本地配置文件 logger.info("尝试读取本地配置文件!"); @@ -299,7 +299,7 @@ public class JNotepadMenuBar extends MenuBar { logger.error("读取失败,配置文件错误或不存在配置文件!"); flag = true; } - ObjectNode json = null; + ObjectNode json; if (!flag) { json = JsonUtil.OBJECT_MAPPER.readValue(jsonData.toString(), ObjectNode.class); diff --git a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java index be34545..5839324 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java +++ b/src/main/java/org/jcnc/jnotepad/ui/status/JNotepadStatusBox.java @@ -35,6 +35,11 @@ public class JNotepadStatusBox extends HBox { initStatusBox(); } + /** + * 初始化状态栏组件 + * + * @since 2023/8/27 9:33 + */ public void initStatusBox() { this.getChildren().clear(); // 创建状态栏 @@ -42,6 +47,7 @@ public class JNotepadStatusBox extends HBox { // 创建新的标签以显示编码信息 enCodingLabel = new Label(); updateEncodingLabel(); + updateWhenTabSelected(); this.getChildren().add(statusLabel); this.getChildren().add(enCodingLabel); this.getProperties().put("borderpane-margin", new Insets(5, 10, 5, 10)); diff --git a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java index 804d1b2..813a258 100644 --- a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java @@ -21,8 +21,10 @@ public class ViewManager { // 主界面布局 - private BorderPane root; // 主布局 - + /** + * 主布局 + */ + private BorderPane root; private static ViewManager instance = null;