From 431cf74b9558606006cb8da0c0ccedd61e132daf Mon Sep 17 00:00:00 2001 From: qmstyle Date: Fri, 7 Mar 2025 11:22:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E6=A0=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=202025=E5=B9=B43=E6=9C=887=E6=97=A511:22:44?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../online/exam/ui/api/ApiUtils.java | 66 ++++++++++++------- .../ui/components/DynamicTableComponent.java | 53 ++++----------- .../online/exam/ui/layouts/SideMenu.java | 10 +-- 3 files changed, 59 insertions(+), 70 deletions(-) diff --git a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java index 53f3a9a..7b05f49 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/api/ApiUtils.java @@ -9,11 +9,10 @@ import com.alibaba.fastjson.JSONObject; import com.zhangmeng.online.exam.ui.layouts.SideMenu; import com.zhangmeng.online.exam.ui.utils.HttpUtils; +import javafx.beans.property.SimpleMapProperty; +import javafx.beans.property.SimpleStringProperty; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * @author zm @@ -52,41 +51,58 @@ public class ApiUtils { return menuItems; } - public static Map getUserList(){ + public static List> getUserList(){ String userListData = HttpUtils.GET(API_URL + "/user/list"); JSONObject jsonObject = JSON.parseObject(userListData); JSONArray data = jsonObject.getJSONArray("data"); - Map userMap = new HashMap<>(); + List> userMapList = new ArrayList<>(); for (Object datum : data) { - JSONObject user = (JSONObject) datum; - userMap.put("序号", user.getString("id")); - userMap.put("用户名", user.getString("username")); - userMap.put("电子邮箱", user.getString("email")); - userMap.put("手机号码", user.getString("phone")); + Map userMap = new HashMap<>(); + userMap.put("序号", new SimpleStringProperty(user.getString("id"))); + userMap.put("用户名", new SimpleStringProperty(user.getString("username"))); + userMap.put("电子邮箱", new SimpleStringProperty(user.getString("email"))); + userMap.put("手机号码", new SimpleStringProperty(user.getString("phone"))); + userMapList.add(userMap); } - - return userMap; + return userMapList; } - public static Map getRoleList() { + public static List> getRoleList() { String userListData = HttpUtils.GET(API_URL + "/role/list"); JSONObject jsonObject = JSON.parseObject(userListData); JSONArray data = jsonObject.getJSONArray("data"); - Map userMap = new HashMap<>(); + List> roleMapList = new ArrayList<>(); for (Object datum : data) { - - JSONObject user = (JSONObject) datum; - userMap.put("序号", user.getString("id")); - userMap.put("角色名称", user.getString("name")); - userMap.put("描述", user.getString("desc")); - userMap.put("角色类型", user.getString("type_name")); + JSONObject role = (JSONObject) datum; + Map roleMap = new HashMap<>(); + roleMap.put("序号", new SimpleStringProperty(role.getString("id"))); + roleMap.put("角色名称",new SimpleStringProperty( role.getString("name"))); + roleMap.put("描述",new SimpleStringProperty( role.getString("desc"))); + roleMap.put("角色类型",new SimpleStringProperty( role.getString("type_name"))); + roleMapList.add(roleMap); } - - return userMap; + return roleMapList; } - public static Map getPermissionList() { - return null; + public static List> getPermissionList() { + + String userListData = HttpUtils.GET(API_URL + "/permission/list"); + JSONObject jsonObject = JSON.parseObject(userListData); + JSONArray data = jsonObject.getJSONArray("data"); + + List> permissionMapList = new ArrayList<>(); + for (Object datum : data) { + JSONObject permission = (JSONObject) datum; + Map userMap = new HashMap<>(); + userMap.put("序号", new SimpleStringProperty(permission.getString("id"))); + userMap.put("权限名称",new SimpleStringProperty( permission.getString("name"))); + userMap.put("描述",new SimpleStringProperty( permission.getString("desc"))); + userMap.put("权限路径",new SimpleStringProperty( permission.getString("url"))); + permissionMapList.add(userMap); + } + return permissionMapList; } + + } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java b/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java index cd5add1..b9171f6 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/components/DynamicTableComponent.java @@ -1,17 +1,16 @@ package com.zhangmeng.online.exam.ui.components; +import javafx.beans.property.SimpleMapProperty; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; +import javafx.scene.control.cell.MapValueFactory; import javafx.scene.control.cell.TextFieldTableCell; import javafx.scene.layout.VBox; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 动态表格 @@ -21,59 +20,31 @@ import java.util.Map; * @version: 1.0 */ public class DynamicTableComponent extends VBox { - private final ObservableList data = FXCollections.observableArrayList(); + private final ObservableList> data = FXCollections.observableArrayList(); - // 数据模型定义(使用JavaFX属性)‌:ml-citation{ref="1,3" data="citationList"} - public static class DynamicDataModel { - private final Map properties = new HashMap<>(); - - public DynamicDataModel(Map data) { - data.forEach((k, v) -> - properties.put(k, new SimpleStringProperty(v)) - ); - } - - public SimpleStringProperty getProperty(String key) { - return properties.get(key); - } - } - - public DynamicTableComponent(Map dataList) { + public DynamicTableComponent(List> dataList) { super(); - TableView tableView = new TableView<>(); + TableView> tableView = new TableView<>(); tableView.setItems(data); tableView.prefHeightProperty().bind(this.heightProperty()); tableView.prefWidthProperty().bind(this.widthProperty()); // 动态生成列(示例字段)‌:ml-citation{ref="3,4" data="citationList"} - List columns = Arrays.asList(dataList.keySet().toArray(new String[0])); + List columns = Arrays.asList(dataList.get(0).keySet().toArray(new String[0])); columns.forEach(col -> { - TableColumn column = new TableColumn<>(col); - + TableColumn, String> column = new TableColumn<>(col); // 数据绑定‌:ml-citation{ref="1,3" data="citationList"} - column.setCellValueFactory(param -> - param.getValue().getProperty(col) - ); - + column.setCellValueFactory(new MapValueFactory(col)); // 启用单元格编辑‌:ml-citation{ref="4,5" data="citationList"} column.setCellFactory(TextFieldTableCell.forTableColumn()); column.setOnEditCommit(event -> { - DynamicDataModel row = event.getRowValue(); - row.getProperty(col).set(event.getNewValue()); + Map row = event.getRowValue(); + row.get(col).set(event.getNewValue()); }); column.prefWidthProperty().bind(tableView.widthProperty().divide(columns.size())); - tableView.getColumns().add(column); }); - - // 填充示例数据‌:ml-citation{ref="2,3" data="citationList"} -// data.add(new DynamicDataModel(Map.of( -// "姓名", "张三", -// "年龄", "28", -// "城市", "北京" -// ))); - data.add(new DynamicDataModel(dataList)); - + data.addAll(dataList); this.getChildren().addAll(tableView); } diff --git a/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java b/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java index 26402f7..a802155 100644 --- a/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java +++ b/src/main/java/com/zhangmeng/online/exam/ui/layouts/SideMenu.java @@ -4,6 +4,8 @@ import com.zhangmeng.online.exam.ui.admin.IndexPage; import com.zhangmeng.online.exam.ui.api.ApiUtils; import com.zhangmeng.online.exam.ui.components.DynamicTableComponent; import com.zhangmeng.online.exam.ui.components.ShortAnswerComponent; +import javafx.beans.property.SimpleMapProperty; +import javafx.beans.property.SimpleStringProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; @@ -16,8 +18,10 @@ import javafx.scene.control.TitledPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; /** @@ -118,9 +122,7 @@ public class SideMenu extends VBox { }); hbox.setOnMouseClicked(event -> { - - System.out.println("hbox.setOnMouseClicked====>" + data.getUrl()); - + //System.out.println("hbox.setOnMouseClicked====>" + data.getUrl()); switch (data.getUrl()) { case "/user/list" -> init_table(hbox, ApiUtils.getUserList()); case "/role/list" -> init_table(hbox,ApiUtils.getRoleList()); @@ -157,7 +159,7 @@ public class SideMenu extends VBox { } - private void init_table(HBox hbox, Map dataList) { + private void init_table(HBox hbox, List> dataList) { Scene scene = hbox.getScene(); IndexPage root = (IndexPage) scene.getRoot(); DynamicTableComponent shortAnswerComponent = new DynamicTableComponent(dataList);