️ 优化代码逻辑

This commit is contained in:
gewuyou 2023-08-30 12:31:52 +08:00
parent 5b5fdaadd7
commit e1a058d891
7 changed files with 42 additions and 31 deletions

View File

@ -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 {

View File

@ -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();
}

View File

@ -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;
/**

View File

@ -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工具<br>
* 封装了项目所有的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;
}
/**
* 获取标签页布局组件

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;
/**