From 4d3417a3348d8802f5029e863f0a5b82ad764ec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E5=AE=89=E7=A8=8B?= <3207699400@qq.com> Date: Thu, 5 Dec 2024 17:41:10 +0800 Subject: [PATCH] ha --- src/Main.java | 7 ++++ src/view/CategoryManagementView.java | 56 ++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 src/view/CategoryManagementView.java diff --git a/src/Main.java b/src/Main.java index 3c03d46..ad400fe 100644 --- a/src/Main.java +++ b/src/Main.java @@ -210,6 +210,9 @@ public class Main extends Application { case "库存报表": showInventoryReportView(); break; + case "分类管理": + showCategoryManagementView(); + break; default: // 其他菜单项的处理逻辑 break; @@ -241,6 +244,10 @@ public class Main extends Application { GoodsManagementView goodsManagementView = new GoodsManagementView(); contentArea.setCenter(goodsManagementView); } + private void showCategoryManagementView() { + CategoryManagementView categoryManagementView = new CategoryManagementView(); + contentArea.setCenter(categoryManagementView); + } public static void main(String[] args) { launch(args); } diff --git a/src/view/CategoryManagementView.java b/src/view/CategoryManagementView.java new file mode 100644 index 0000000..9ed7bb8 --- /dev/null +++ b/src/view/CategoryManagementView.java @@ -0,0 +1,56 @@ +package view; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.scene.control.TreeItem; +import javafx.scene.control.TreeView; +import javafx.scene.layout.AnchorPane; +import model.DataManager; +import model.Goods; + +public class CategoryManagementView extends AnchorPane { + + private TreeView categoryTreeView; + + public CategoryManagementView() { + initializeComponents(); + loadCategoriesAndGoods(); + } + + private void initializeComponents() { + categoryTreeView = new TreeView<>(); + categoryTreeView.setShowRoot(false); // 不显示根节点 + AnchorPane.setTopAnchor(categoryTreeView, 10.0); + AnchorPane.setRightAnchor(categoryTreeView, 10.0); + AnchorPane.setBottomAnchor(categoryTreeView, 10.0); + AnchorPane.setLeftAnchor(categoryTreeView, 10.0); + this.getChildren().add(categoryTreeView); + } + + private void loadCategoriesAndGoods() { + DataManager dataManager = DataManager.getInstance(); + ObservableList allGoods = FXCollections.observableArrayList(dataManager.getAllGoods()); + + // 获取所有分类 + ObservableList categories = FXCollections.observableArrayList(allGoods.stream() + .map(Goods::getCategory) + .distinct() + .toArray(String[]::new)); + + // 构建树结构 + TreeItem root = new TreeItem<>(); + for (String category : categories) { + TreeItem categoryItem = new TreeItem<>(category); + for (Goods goods : allGoods) { + if (goods.getCategory().equals(category)) { + TreeItem goodsItem = new TreeItem<>(goods.getName() + " (" + goods.getSpecification() + ")"); + categoryItem.getChildren().add(goodsItem); + } + } + root.getChildren().add(categoryItem); + } + + categoryTreeView.setRoot(root); + } + +}