93 lines
1.9 KiB
Java
93 lines
1.9 KiB
Java
package org.jcnc.jnotepad;
|
|
|
|
import javafx.geometry.Insets;
|
|
import javafx.scene.Scene;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.layout.BorderPane;
|
|
import javafx.scene.layout.HBox;
|
|
|
|
|
|
/**
|
|
* 视图管理类
|
|
*/
|
|
public class ViewManager {
|
|
|
|
public static Label encodingLabel; // 新增属性用于显示文本编码
|
|
|
|
public static int tabIndex = 0;
|
|
|
|
// 定义菜单栏
|
|
public static MenuBar menuBar;
|
|
public static Menu fileMenu;
|
|
public static MenuItem newItem, openItem, saveItem, saveAsItem;
|
|
|
|
// 定义主界面
|
|
public static BorderPane root;
|
|
|
|
// 定义多个Tab页
|
|
public static TabPane tabPane;
|
|
|
|
// 定义状态栏
|
|
public static Label statusLabel;
|
|
|
|
private static ViewManager instance = null;
|
|
|
|
|
|
public static ViewManager getInstance(Scene scene) {
|
|
if(instance == null) {
|
|
instance = new ViewManager(scene);
|
|
}
|
|
|
|
return instance;
|
|
}
|
|
|
|
/**
|
|
* 构造函数,设置场景和根布局
|
|
* @param scene 场景
|
|
*/
|
|
private ViewManager(Scene scene){
|
|
|
|
root = new BorderPane();
|
|
|
|
scene.setRoot(root);
|
|
}
|
|
|
|
public void initScreen(Scene scene){
|
|
// 创建菜单栏并添加菜单项
|
|
menuBar = new MenuBar();
|
|
fileMenu = new Menu("文件");
|
|
newItem = new MenuItem("新建");
|
|
openItem = new MenuItem("打开");
|
|
saveItem = new MenuItem("保存");
|
|
saveAsItem = new MenuItem("另存为");
|
|
fileMenu.getItems().addAll(newItem, openItem, saveItem, saveAsItem);
|
|
menuBar.getMenus().add(fileMenu);
|
|
|
|
// 创建主界面
|
|
root = new BorderPane();
|
|
root.setTop(menuBar);
|
|
|
|
// 创建Tab页和文本编辑区
|
|
tabPane = new TabPane();
|
|
root.setCenter(tabPane);
|
|
|
|
// 创建状态栏
|
|
statusLabel = new Label("行: 1 \t列: 1 \t字数: 0 ");
|
|
|
|
|
|
encodingLabel = new Label(); // 创建新的标签用于显示编码信息
|
|
HBox statusBox = new HBox(statusLabel, encodingLabel); // 使用 HBox 放置状态标签和编码标签
|
|
root.setBottom(statusBox);
|
|
BorderPane.setMargin(statusBox, new Insets(5, 10, 5, 10));
|
|
|
|
scene.setRoot(root);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|