优化设置页面的样式
This commit is contained in:
parent
105a7fff15
commit
e7fd2213e7
@ -2,11 +2,10 @@ package org.jcnc.jnotepad.ui.setStage;
|
|||||||
|
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.control.ListView;
|
|
||||||
import javafx.scene.control.SplitPane;
|
import javafx.scene.control.SplitPane;
|
||||||
import javafx.scene.control.TitledPane;
|
import javafx.scene.control.TreeItem;
|
||||||
|
import javafx.scene.control.TreeView;
|
||||||
import javafx.scene.layout.StackPane;
|
import javafx.scene.layout.StackPane;
|
||||||
import javafx.scene.layout.VBox;
|
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
import org.jcnc.jnotepad.tool.UiUtil;
|
import org.jcnc.jnotepad.tool.UiUtil;
|
||||||
|
|
||||||
@ -23,9 +22,7 @@ public class SetStage {
|
|||||||
private static final SetStage SET_STAGE = new SetStage();
|
private static final SetStage SET_STAGE = new SetStage();
|
||||||
private StackPane contentDisplay;
|
private StackPane contentDisplay;
|
||||||
|
|
||||||
private ListView<String> generalListView;
|
private TreeView<String> settingsTreeView;
|
||||||
private ListView<String> appearanceListView;
|
|
||||||
private ListView<String> securityListView;
|
|
||||||
|
|
||||||
private SetStage() {
|
private SetStage() {
|
||||||
// 私有构造方法以实现单例模式
|
// 私有构造方法以实现单例模式
|
||||||
@ -47,27 +44,11 @@ public class SetStage {
|
|||||||
// 创建一个用于显示内容的 StackPane,并初始化为默认显示的标签
|
// 创建一个用于显示内容的 StackPane,并初始化为默认显示的标签
|
||||||
contentDisplay = new StackPane(new Label("从左侧选择设置以显示内容"));
|
contentDisplay = new StackPane(new Label("从左侧选择设置以显示内容"));
|
||||||
|
|
||||||
// 创建不同设置类别的 ListView,并初始化设置项
|
// 创建 TreeView,并初始化设置项
|
||||||
generalListView = createListView("常规设置项1", "常规设置项2");
|
settingsTreeView = createTreeView();
|
||||||
appearanceListView = createListView("外观设置项1", "外观设置项2");
|
|
||||||
securityListView = createListView("安全设置项1", "安全设置项2");
|
|
||||||
|
|
||||||
// 创建 TitledPanes,每个面板包含一个标题和对应的设置列表
|
// 创建一个分割面板,左侧是设置树,右侧是内容显示区域
|
||||||
TitledPane generalPane = new TitledPane("常规设置", generalListView);
|
SplitPane splitPane = new SplitPane(settingsTreeView, contentDisplay);
|
||||||
TitledPane appearancePane = new TitledPane("外观设置", appearanceListView);
|
|
||||||
TitledPane securityPane = new TitledPane("安全设置", securityListView);
|
|
||||||
|
|
||||||
// 为 TitledPanes 添加点击事件监听器,用于更新内容显示区域
|
|
||||||
generalPane.setOnMouseClicked(event -> updateContentDisplay(generalListView));
|
|
||||||
appearancePane.setOnMouseClicked(event -> updateContentDisplay(appearanceListView));
|
|
||||||
securityPane.setOnMouseClicked(event -> updateContentDisplay(securityListView));
|
|
||||||
|
|
||||||
// 创建一个垂直布局容器,将 TitledPanes 放入其中
|
|
||||||
VBox titledPaneContainer = new VBox(10);
|
|
||||||
titledPaneContainer.getChildren().addAll(generalPane, appearancePane, securityPane);
|
|
||||||
|
|
||||||
// 创建一个分割面板,左侧是设置列表,右侧是内容显示区域
|
|
||||||
SplitPane splitPane = new SplitPane(titledPaneContainer, contentDisplay);
|
|
||||||
// 设置分割位置
|
// 设置分割位置
|
||||||
splitPane.setDividerPositions(0.3);
|
splitPane.setDividerPositions(0.3);
|
||||||
|
|
||||||
@ -83,27 +64,40 @@ public class SetStage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建一个 ListView 并初始化项。
|
* 创建一个 TreeView 并初始化项。
|
||||||
*
|
*
|
||||||
* @param items 要添加到 ListView 的项
|
* @return 初始化后的 TreeView
|
||||||
* @return 初始化后的 ListView
|
|
||||||
*/
|
*/
|
||||||
private ListView<String> createListView(String... items) {
|
private TreeView<String> createTreeView() {
|
||||||
ListView<String> listView = new ListView<>();
|
TreeItem<String> rootItem = new TreeItem<>("设置");
|
||||||
listView.getItems().addAll(items);
|
rootItem.setExpanded(true);
|
||||||
return listView;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
TreeItem<String> generalItem = new TreeItem<>("常规设置");
|
||||||
* 更新内容显示区域,根据选定的列表项显示相应的设置内容。
|
TreeItem<String> appearanceItem = new TreeItem<>("外观设置");
|
||||||
*
|
TreeItem<String> securityItem = new TreeItem<>("安全设置");
|
||||||
* @param listView 选定项所属的 ListView
|
|
||||||
*/
|
generalItem.getChildren().add(new TreeItem<>("常规设置项1"));
|
||||||
private void updateContentDisplay(ListView<String> listView) {
|
generalItem.getChildren().add(new TreeItem<>("常规设置项2"));
|
||||||
String selectedItem = listView.getSelectionModel().getSelectedItem();
|
|
||||||
if (selectedItem != null) {
|
appearanceItem.getChildren().add(new TreeItem<>("外观设置项1"));
|
||||||
// 更新内容显示区域为选定项的设置内容标签
|
appearanceItem.getChildren().add(new TreeItem<>("外观设置项2"));
|
||||||
contentDisplay.getChildren().setAll(new Label(selectedItem + " 的设置内容"));
|
|
||||||
}
|
|
||||||
|
securityItem.getChildren().add(new TreeItem<>("安全设置项1"));
|
||||||
|
securityItem.getChildren().add(new TreeItem<>("安全设置项2"));
|
||||||
|
|
||||||
|
rootItem.getChildren().add(generalItem);
|
||||||
|
rootItem.getChildren().add(appearanceItem);
|
||||||
|
rootItem.getChildren().add(securityItem);
|
||||||
|
|
||||||
|
TreeView<String> treeView = new TreeView<>(rootItem);
|
||||||
|
treeView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
|
if (newValue != null) {
|
||||||
|
// 更新内容显示区域为选定项的设置内容标签
|
||||||
|
contentDisplay.getChildren().setAll(new Label(newValue.getValue() + " 的设置内容"));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return treeView;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user