You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

237 lines
7.9 KiB

import javafx.application.Application;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import view.*;
public class Main extends Application {
private BorderPane contentArea;
@Override
public void start(Stage primaryStage) {
try {
// 创建主布局
BorderPane mainLayout = new BorderPane();
// 创建菜单栏
MenuBar menuBar = createMenuBar();
mainLayout.setTop(menuBar);
// 创建左侧导航栏
VBox leftPanel = createLeftPanel();
mainLayout.setLeft(leftPanel);
// 创建内容区域
contentArea = new BorderPane();
contentArea.setStyle("-fx-background-color: #f4f4f4;");
contentArea.setPadding(new Insets(10));
// 设置默认欢迎页面
showWelcomePage();
mainLayout.setCenter(contentArea);
// 创建状态栏
HBox statusBar = createStatusBar();
mainLayout.setBottom(statusBar);
// 设置场景
Scene scene = new Scene(mainLayout, 1200, 800);
primaryStage.setScene(scene);
primaryStage.setTitle("仓库管理系统");
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
private VBox createLeftPanel() {
VBox leftPanel = new VBox(10);
leftPanel.setPadding(new Insets(10));
leftPanel.setStyle("-fx-background-color: #e8e8e8;");
leftPanel.setPrefWidth(200);
// 创建搜索框
TextField searchField = new TextField();
searchField.setPromptText("搜索...");
// 创建导航树
TreeView<String> navigationTree = createNavigationTree();
// 添加到左侧面板
leftPanel.getChildren().addAll(searchField, navigationTree);
VBox.setVgrow(navigationTree, Priority.ALWAYS);
return leftPanel;
}
private void showWelcomePage() {
VBox welcomeBox = new VBox(20);
welcomeBox.setAlignment(javafx.geometry.Pos.CENTER);
Label welcomeLabel = new Label("欢迎使用仓库管理系统");
welcomeLabel.setStyle("-fx-font-size: 24px; -fx-font-weight: bold;");
Label infoLabel = new Label("请从左侧菜单选择要使用的功能");
infoLabel.setStyle("-fx-font-size: 14px;");
welcomeBox.getChildren().addAll(welcomeLabel, infoLabel);
contentArea.setCenter(welcomeBox);
}
private HBox createStatusBar() {
HBox statusBar = new HBox(10);
statusBar.setPadding(new Insets(5));
statusBar.setStyle("-fx-background-color: #e8e8e8;");
Label statusLabel = new Label("就绪");
Label userLabel = new Label("当前用户:管理员");
Label timeLabel = new Label(getCurrentTime());
Region spacer = new Region();
HBox.setHgrow(spacer, Priority.ALWAYS);
statusBar.getChildren().addAll(statusLabel, spacer, userLabel, timeLabel);
// 动态更新时间
Thread timeThread = new Thread(() -> {
while (true) {
try {
Thread.sleep(1000);
Platform.runLater(() -> timeLabel.setText(getCurrentTime()));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
timeThread.setDaemon(true);
timeThread.start();
return statusBar;
}
private String getCurrentTime() {//实时时间。
return java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
}
private MenuBar createMenuBar() {
MenuBar menuBar = new MenuBar();
// 系统菜单
Menu systemMenu = new Menu("系统");
MenuItem settingsItem = new MenuItem("系统设置");
MenuItem exitItem = new MenuItem("退出");
systemMenu.getItems().addAll(settingsItem, exitItem);
// 库存管理菜单
Menu inventoryMenu = new Menu("库存管理");
MenuItem inboundItem = new MenuItem("入库管理");
MenuItem outboundItem = new MenuItem("出库管理");
MenuItem queryItem = new MenuItem("库存查询");
inventoryMenu.getItems().addAll(inboundItem, outboundItem, queryItem);
// 货物管理菜单
Menu goodsMenu = new Menu("货物管理");
MenuItem goodsInfoItem = new MenuItem("货物信息");
MenuItem categoryItem = new MenuItem("分类管理");
goodsMenu.getItems().addAll(goodsInfoItem, categoryItem);
// 报表菜单
Menu reportMenu = new Menu("报表统计");
MenuItem inventoryReportItem = new MenuItem("库存报表");
MenuItem logItem = new MenuItem("操作日志");
reportMenu.getItems().addAll(inventoryReportItem, logItem);
// 为入库管理菜单项添加事件处理
inboundItem.setOnAction(e -> showInboundView());
// 为出库管理菜单项添加事件处理。
outboundItem.setOnAction(e -> showOutboundView());
// 为货物信息菜单项添加事件处理
goodsInfoItem.setOnAction(e -> showGoodsManagementView());
menuBar.getMenus().addAll(systemMenu, inventoryMenu, goodsMenu, reportMenu);
return menuBar;
}
private TreeView<String> createNavigationTree() {
TreeItem<String> root = new TreeItem<>("功能导航");
root.setExpanded(true);
// 库存管理
TreeItem<String> inventory = new TreeItem<>("库存管理");
inventory.getChildren().addAll(
new TreeItem<>("入库管理"),
new TreeItem<>("出库管理"),
new TreeItem<>("库存查询")
);
// 货物管理
TreeItem<String> goods = new TreeItem<>("货物管理");
goods.getChildren().addAll(
new TreeItem<>("货物信息"),
new TreeItem<>("分类管理")
);
// 报表统计
TreeItem<String> report = new TreeItem<>("报表统计");
report.getChildren().addAll(
new TreeItem<>("库存报表"),
new TreeItem<>("操作日志")
);
root.getChildren().addAll(inventory, goods, report);
TreeView<String> tree = new TreeView<>(root);
// 为导航树添加事件处理
tree.setOnMouseClicked(event -> {
TreeItem<String> item = tree.getSelectionModel().getSelectedItem();
if (item != null) {
switch (item.getValue()){
case "库存查询":
showInventoryView();
break;
case "入库管理":
showInboundView();
break;
case "出库管理":
showOutboundView();
break;
case "货物信息":
showGoodsManagementView();
break;
default:
// 其他菜单项的处理逻辑
break;
}
}
});
return tree;
}
private void showInboundView() {
InboundView inboundView = new InboundView();
contentArea.setCenter(inboundView);
}
private void showOutboundView() {
OutboundView outboundView = new OutboundView();
contentArea.setCenter(outboundView);
}
private void showInventoryView() {
InventoryView inventoryView = new InventoryView();
contentArea.setCenter(inventoryView);
}
private void showGoodsManagementView() {
GoodsManagementView goodsManagementView = new GoodsManagementView();
contentArea.setCenter(goodsManagementView);
}
public static void main(String[] args) {
launch(args);
}
}