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