From e1a058d89152fa4380f44d1f0518e63f345d26fc Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Wed, 30 Aug 2023 12:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/jcnc/jnotepad/Interface/VBoxAble.java | 1 - src/main/java/org/jcnc/jnotepad/LunchApp.java | 5 ++- .../controller/event/handler/tool/SetBtn.java | 10 ------ .../java/org/jcnc/jnotepad/tool/UiUtil.java | 20 ++++++++++- .../jnotepad/ui/root/top/tools/ToolHBox.java | 2 -- .../jcnc/jnotepad/ui/setStage/SetStage.java | 33 +++++++++++-------- .../jnotepad/view/manager/ViewManager.java | 2 +- 7 files changed, 42 insertions(+), 31 deletions(-) diff --git a/src/main/java/org/jcnc/jnotepad/Interface/VBoxAble.java b/src/main/java/org/jcnc/jnotepad/Interface/VBoxAble.java index 0d94912..88bc9ab 100644 --- a/src/main/java/org/jcnc/jnotepad/Interface/VBoxAble.java +++ b/src/main/java/org/jcnc/jnotepad/Interface/VBoxAble.java @@ -1,7 +1,6 @@ package org.jcnc.jnotepad.Interface; import javafx.scene.Node; -import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; public interface VBoxAble { diff --git a/src/main/java/org/jcnc/jnotepad/LunchApp.java b/src/main/java/org/jcnc/jnotepad/LunchApp.java index 089b152..984a657 100644 --- a/src/main/java/org/jcnc/jnotepad/LunchApp.java +++ b/src/main/java/org/jcnc/jnotepad/LunchApp.java @@ -4,7 +4,6 @@ package org.jcnc.jnotepad; import atlantafx.base.theme.PrimerLight; import javafx.application.Application; import javafx.scene.Scene; -import javafx.scene.image.Image; import javafx.scene.layout.Pane; import javafx.stage.Stage; import org.jcnc.jnotepad.app.i18n.UIResourceBundle; @@ -13,6 +12,7 @@ import org.jcnc.jnotepad.constants.TextConstants; import org.jcnc.jnotepad.controller.i18n.LocalizationController; import org.jcnc.jnotepad.controller.manager.Controller; import org.jcnc.jnotepad.manager.ThreadPoolManager; +import org.jcnc.jnotepad.tool.UiUtil; import org.jcnc.jnotepad.view.manager.ViewManager; import java.util.List; @@ -38,7 +38,6 @@ public class LunchApp extends Application { Pane root = new Pane(); double width = AppConstants.SCREEN_WIDTH; double length = AppConstants.SCREEN_LENGTH; - String icon = AppConstants.APP_ICON; scene = new Scene(root, width, length); Application.setUserAgentStylesheet(new PrimerLight().getUserAgentStylesheet()); scene.getStylesheets().add(Objects.requireNonNull(getClass().getResource("/css/styles.css")).toExternalForm()); @@ -47,7 +46,7 @@ public class LunchApp extends Application { primaryStage.setWidth(width); primaryStage.setHeight(length); primaryStage.setScene(scene); - primaryStage.getIcons().add(new Image(Objects.requireNonNull(getClass().getResource(icon)).toString())); + primaryStage.getIcons().add(UiUtil.getIcon()); primaryStage.show(); } diff --git a/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java b/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java index 035b2f8..37b7e50 100644 --- a/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java +++ b/src/main/java/org/jcnc/jnotepad/controller/event/handler/tool/SetBtn.java @@ -2,17 +2,7 @@ package org.jcnc.jnotepad.controller.event.handler.tool; import javafx.event.ActionEvent; import javafx.event.EventHandler; -import javafx.scene.Scene; -import javafx.scene.control.Label; -import javafx.scene.layout.VBox; -import javafx.stage.Stage; -import org.jcnc.jnotepad.app.i18n.UIResourceBundle; -import org.jcnc.jnotepad.constants.TextConstants; -import org.jcnc.jnotepad.tool.UiUtil; -import org.jcnc.jnotepad.ui.module.LineNumberTextArea; -import org.jcnc.jnotepad.ui.root.center.tab.JNotepadTab; import org.jcnc.jnotepad.ui.setStage.SetStage; -import org.jcnc.jnotepad.view.manager.ViewManager; /** diff --git a/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java b/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java index 41f15fd..caee381 100644 --- a/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java +++ b/src/main/java/org/jcnc/jnotepad/tool/UiUtil.java @@ -1,12 +1,16 @@ package org.jcnc.jnotepad.tool; +import javafx.scene.image.Image; import javafx.stage.Window; -import org.jcnc.jnotepad.ui.root.top.menu.JNotepadMenuBar; +import org.jcnc.jnotepad.constants.AppConstants; import org.jcnc.jnotepad.ui.root.bottom.status.JNotepadStatusBox; import org.jcnc.jnotepad.ui.root.center.tab.JNotepadTab; import org.jcnc.jnotepad.ui.root.center.tab.JNotepadTabPane; +import org.jcnc.jnotepad.ui.root.top.menu.JNotepadMenuBar; import org.jcnc.jnotepad.view.manager.ViewManager; +import java.util.Objects; + /** * UI工具
* 封装了项目所有的UI组件,以减少组件单例模式造成代码的复杂性 @@ -33,6 +37,20 @@ public class UiUtil { * 菜单栏组件 */ private static final JNotepadMenuBar MENU_BAR = JNotepadMenuBar.getInstance(); + /** + * 应用程序图标 + */ + private static final Image ICON = new Image(Objects.requireNonNull(UiUtil.class.getResource(AppConstants.APP_ICON)).toString()); + + /** + * 获取应用程序图标 + * + * @return javafx.scene.image.Image + * @since 2023/8/30 11:03 + */ + public static Image getIcon() { + return ICON; + } /** * 获取标签页布局组件 diff --git a/src/main/java/org/jcnc/jnotepad/ui/root/top/tools/ToolHBox.java b/src/main/java/org/jcnc/jnotepad/ui/root/top/tools/ToolHBox.java index d6ac4c4..96df3b4 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/root/top/tools/ToolHBox.java +++ b/src/main/java/org/jcnc/jnotepad/ui/root/top/tools/ToolHBox.java @@ -1,7 +1,5 @@ package org.jcnc.jnotepad.ui.root.top.tools; -import javafx.geometry.Pos; -import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; diff --git a/src/main/java/org/jcnc/jnotepad/ui/setStage/SetStage.java b/src/main/java/org/jcnc/jnotepad/ui/setStage/SetStage.java index ca0d4f4..7c8512e 100644 --- a/src/main/java/org/jcnc/jnotepad/ui/setStage/SetStage.java +++ b/src/main/java/org/jcnc/jnotepad/ui/setStage/SetStage.java @@ -1,18 +1,25 @@ package org.jcnc.jnotepad.ui.setStage; -import javafx.geometry.Insets; import javafx.scene.Scene; -import javafx.scene.control.*; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; +import javafx.scene.control.Label; +import javafx.scene.control.ListView; +import javafx.scene.control.SplitPane; +import javafx.scene.control.TitledPane; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; +import org.jcnc.jnotepad.tool.UiUtil; +/** + * @author 许轲 + */ public class SetStage { private static final SetStage SET_STAGE = new SetStage(); - private StackPane contentDisplay; // Declare contentDisplay as a class member + /** + * Declare contentDisplay as a class member + */ + private StackPane contentDisplay; public static SetStage getInstance() { return SET_STAGE; @@ -57,16 +64,17 @@ public class SetStage { titledPaneContainer.getChildren().addAll(generalPane, appearancePane, securityPane); // 创建一个占位符,用于显示右侧内容区域 - StackPane contentDisplay = new StackPane(new Label("从左侧选择设置以显示内容")); + StackPane stackPane = new StackPane(new Label("从左侧选择设置以显示内容")); // 设置 TitledPanes 的点击事件监听器 - generalPane.setOnMouseClicked(event -> contentDisplay.getChildren().setAll(new Label("常规设置内容"))); - appearancePane.setOnMouseClicked(event -> contentDisplay.getChildren().setAll(new Label("外观设置内容"))); - securityPane.setOnMouseClicked(event -> contentDisplay.getChildren().setAll(new Label("安全设置内容"))); + generalPane.setOnMouseClicked(event -> stackPane.getChildren().setAll(new Label("常规设置内容"))); + appearancePane.setOnMouseClicked(event -> stackPane.getChildren().setAll(new Label("外观设置内容"))); + securityPane.setOnMouseClicked(event -> stackPane.getChildren().setAll(new Label("安全设置内容"))); // 创建一个水平分割面板来容纳整个布局 - SplitPane splitPane = new SplitPane(titledPaneContainer, contentDisplay); - splitPane.setDividerPositions(0.3); // 设置分隔条位置 + SplitPane splitPane = new SplitPane(titledPaneContainer, stackPane); + // 设置分隔条位置 + splitPane.setDividerPositions(0.3); // 创建场景 Scene scene = new Scene(splitPane, 800, 600); @@ -74,6 +82,7 @@ public class SetStage { // 设置场景并显示窗口 setStage.setScene(scene); setStage.setTitle("设置窗口"); + setStage.getIcons().add(UiUtil.getIcon()); setStage.show(); } @@ -87,10 +96,8 @@ public class SetStage { contentDisplay.getChildren().setAll(new Label(selectedItem + " 的设置内容")); } }); - return listView; } - } 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 7a16a3c..b536773 100644 --- a/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java +++ b/src/main/java/org/jcnc/jnotepad/view/manager/ViewManager.java @@ -3,9 +3,9 @@ package org.jcnc.jnotepad.view.manager; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; import org.jcnc.jnotepad.exception.AppException; -import org.jcnc.jnotepad.ui.root.top.RootTopVBox; import org.jcnc.jnotepad.ui.root.bottom.status.JNotepadStatusBox; import org.jcnc.jnotepad.ui.root.center.tab.JNotepadTabPane; +import org.jcnc.jnotepad.ui.root.top.RootTopVBox; /**