diff --git a/dillon-ui/dillon-ui-fx/pom.xml b/dillon-ui/dillon-ui-fx/pom.xml
index a10d9c8..0100d85 100644
--- a/dillon-ui/dillon-ui-fx/pom.xml
+++ b/dillon-ui/dillon-ui-fx/pom.xml
@@ -17,7 +17,7 @@
${java.version}
${java.version}
UTF-8
- 22.0.1
+ 22.0.2
1.54.4
2.0.1
diff --git a/dillon-ui/dillon-ui-fx/src/test/java/App.java b/dillon-ui/dillon-ui-fx/src/test/java/App.java
new file mode 100644
index 0000000..258989c
--- /dev/null
+++ b/dillon-ui/dillon-ui-fx/src/test/java/App.java
@@ -0,0 +1,5 @@
+public class App {
+ public static void main(String[] args) {
+ SimpleJavaFXApp.main(args);
+ }
+}
diff --git a/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java b/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java
new file mode 100644
index 0000000..2f0a176
--- /dev/null
+++ b/dillon-ui/dillon-ui-fx/src/test/java/SimpleJavaFXApp.java
@@ -0,0 +1,67 @@
+import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.css.PseudoClass;
+import javafx.scene.Scene;
+import javafx.scene.control.Label;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+import javafx.stage.Window;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+public class SimpleJavaFXApp extends Application {
+
+ @Override
+ public void start(Stage stage) throws Exception {
+
+
+
+
+ // 创建一个标签并设置文本
+ Label label = new Label("Hello, JavaFX!");
+
+ // 创建一个根布局
+ StackPane root = new StackPane();
+ root.getChildren().add(label);
+
+ // 创建一个场景,设置根布局和窗口大小
+ Scene scene = new Scene(root, 300, 200);
+
+ // 设置窗口标题
+ stage.setTitle("Simple JavaFX App");
+
+ // 设置场景到窗口
+ stage.setScene(scene);
+
+//
+// Method tkStageGetter = Window.class.getDeclaredMethod("getPeer");;
+//
+// tkStageGetter.setAccessible(true);
+// Object tkStage = tkStageGetter.invoke(stage);
+// Method getPlatformWindow = tkStage.getClass().getDeclaredMethod("getPlatformWindow");
+//// getPlatformWindow.setAccessible(true);
+//// Object platformWindow = getPlatformWindow.invoke(tkStage);
+// Method getNativeHandle = platformWindow.getClass().getMethod("getNativeHandle");
+// getNativeHandle.setAccessible(true);
+// Object nativeHandle = getNativeHandle.invoke(platformWindow);
+// getNativeHandle.setAccessible(true);
+
+ var seamlessFrameApplied = false;
+ stage.getScene()
+ .getRoot()
+ .pseudoClassStateChanged(PseudoClass.getPseudoClass("seamless-frame"), seamlessFrameApplied);
+ stage.getScene()
+ .getRoot()
+ .pseudoClassStateChanged(PseudoClass.getPseudoClass("separate-frame"), !seamlessFrameApplied);
+
+
+ // 显示窗口
+ stage.show();
+ }
+
+ public static void main(String[] args) {
+ // 启动 JavaFX 应用
+ launch(args);
+ }
+}
\ No newline at end of file
diff --git a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java
index f921867..cdf61ee 100644
--- a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java
+++ b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/DataPermissionPane.java
@@ -214,22 +214,29 @@ public class DataPermissionPane extends JPanel {
private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set deptIdlist) {
- if (treeNode.getUserObject() instanceof DeptSimpleRespVO) {
- DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) treeNode.getUserObject();
- deptIdlist.add(deptSimpleRespVO.getId());
+ addDeptIdIfApplicable(treeNode, deptIdlist);
+
+
+ // 处理子节点
+ for (int i = 0; i < treeNode.getChildCount(); i++) {
+ DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i);
+ treeDataScopeDeptIds(childNode, deptIdlist);
}
-
- for (int i = 0; i < treeNode.getChildCount(); i++) {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i);
- if (node.getUserObject() instanceof DeptSimpleRespVO) {
- DeptSimpleRespVO deptSimpleRespVO = (DeptSimpleRespVO) node.getUserObject();
- deptIdlist.add(deptSimpleRespVO.getId());
- }
- treeDataScopeDeptIds(node,deptIdlist);
+ // 处理父节点
+ while (treeNode.getParent() != null) {
+ treeNode = (DefaultMutableTreeNode) treeNode.getParent();
+ addDeptIdIfApplicable(treeNode, deptIdlist);
}
}
+ // 将添加菜单ID的逻辑提取成一个方法
+ private void addDeptIdIfApplicable(DefaultMutableTreeNode treeNode, Set deptIdList) {
+ if (treeNode.getUserObject() instanceof DeptSimpleRespVO) {
+ DeptSimpleRespVO respVO = (DeptSimpleRespVO) treeNode.getUserObject();
+ deptIdList.add(respVO.getId());
+ }
+ }
public void updateData(RoleRespVO roleRespVO) {
@@ -258,11 +265,13 @@ public class DataPermissionPane extends JPanel {
Map nodeMap = new HashMap<>();
nodeMap.put(0l, deptRoot); // Root node
- List selTreePth = new ArrayList<>();
+ List selNodes = new ArrayList<>();
for (DeptSimpleRespVO simpleRespVO : deptResult.getData()) {
DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO);
nodeMap.put(simpleRespVO.getId(), node);
-
+ if (roleRespVO.getDataScopeDeptIds().contains(simpleRespVO.getId())) {
+ selNodes.add(node);
+ }
}
deptResult.getData().forEach(deptSimpleRespVO -> {
@@ -271,15 +280,13 @@ public class DataPermissionPane extends JPanel {
if (parentNode != null) {
parentNode.add(childNode);
}
- if (roleRespVO.getDataScopeDeptIds().contains(deptSimpleRespVO.getId())) {
- selTreePth.add(new TreePath(nodeMap.get(deptSimpleRespVO.getId()).getPath()));
- }
+
});
Map resultMap = new HashMap<>();
resultMap.put("deptRoot", deptRoot);
- resultMap.put("selTreePth", selTreePth);
+ resultMap.put("selNodes", selNodes);
return resultMap;
}
@@ -289,11 +296,17 @@ public class DataPermissionPane extends JPanel {
try {
deptTree.setModel(new DefaultTreeModel((TreeNode) get().get("deptRoot")));
- List selTreePth = (List) get().get("selTreePth");
- if (selTreePth != null) {
- deptTree.getCheckBoxTreeSelectionModel().setSelectionPaths(selTreePth.toArray(new TreePath[0]));
+ List selNodes = (List) get().get("selNodes");
+ if (selNodes != null) {
+ for (DefaultMutableTreeNode node : selNodes) {
+ if (node.isLeaf()) {
+ deptTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath()));
+ }
+
+ }
}
TreeUtils.expandAll(deptTree);
+ TreeUtils.expandAll(deptTree);
} catch (InterruptedException e) {
throw new RuntimeException(e);
diff --git a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java
index 05434c9..f3b455e 100644
--- a/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java
+++ b/dillon-ui/dillon-ui-swing/src/main/java/com/lw/swing/view/system/role/RoleAssignMenuPane.java
@@ -171,19 +171,26 @@ public class RoleAssignMenuPane extends JPanel {
private void treeDataScopeDeptIds(DefaultMutableTreeNode treeNode, Set menuIdlist) {
- if (treeNode.getUserObject() instanceof MenuSimpleRespVO) {
- MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject();
- menuIdlist.add(menuSimpleRespVO.getId());
+ // 处理当前节点
+ addMenuIdIfApplicable(treeNode, menuIdlist);
+
+ // 处理子节点
+ for (int i = 0; i < treeNode.getChildCount(); i++) {
+ DefaultMutableTreeNode childNode = (DefaultMutableTreeNode) treeNode.getChildAt(i);
+ treeDataScopeDeptIds(childNode, menuIdlist);
}
-
- for (int i = 0; i < treeNode.getChildCount(); i++) {
- DefaultMutableTreeNode node = (DefaultMutableTreeNode) treeNode.getChildAt(i);
- if (node.getUserObject() instanceof MenuSimpleRespVO) {
- MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) node.getUserObject();
- menuIdlist.add(menuSimpleRespVO.getId());
- }
- treeDataScopeDeptIds(node, menuIdlist);
+ // 处理父节点
+ while (treeNode.getParent() != null) {
+ treeNode = (DefaultMutableTreeNode) treeNode.getParent();
+ addMenuIdIfApplicable(treeNode, menuIdlist);
+ }
+ }
+ // 将添加菜单ID的逻辑提取成一个方法
+ private void addMenuIdIfApplicable(DefaultMutableTreeNode treeNode, Set menuIdList) {
+ if (treeNode.getUserObject() instanceof MenuSimpleRespVO) {
+ MenuSimpleRespVO menuSimpleRespVO = (MenuSimpleRespVO) treeNode.getUserObject();
+ menuIdList.add(menuSimpleRespVO.getId());
}
}
@@ -208,9 +215,7 @@ public class RoleAssignMenuPane extends JPanel {
java.util.List selNodes = new ArrayList<>();
for (MenuSimpleRespVO simpleRespVO : menuResult.getData()) {
- if (simpleRespVO.getType() == 3) {
- continue;
- }
+
DefaultMutableTreeNode node = new DefaultMutableTreeNode(simpleRespVO);
nodeMap.put(simpleRespVO.getId(), node);
@@ -220,18 +225,17 @@ public class RoleAssignMenuPane extends JPanel {
}
menuResult.getData().forEach(menuSimpleRespVO -> {
- if (menuSimpleRespVO.getType() != 3) {
- DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId());
- DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId());
- if (parentNode != null) {
- if (childNode != null) {
- parentNode.add(childNode);
- }
+ DefaultMutableTreeNode parentNode = nodeMap.get(menuSimpleRespVO.getParentId());
+ DefaultMutableTreeNode childNode = nodeMap.get(menuSimpleRespVO.getId());
+ if (parentNode != null) {
+ if (childNode != null) {
+ parentNode.add(childNode);
}
-
}
+
+
});
Map resultMap = new HashMap<>();
@@ -249,7 +253,9 @@ public class RoleAssignMenuPane extends JPanel {
java.util.List selNodes = (List) get().get("selNodes");
if (selNodes != null) {
for (DefaultMutableTreeNode node : selNodes) {
- menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath()));
+ if (node.isLeaf()) {
+ menuTree.getCheckBoxTreeSelectionModel().addSelectionPath(new TreePath(node.getPath()));
+ }
}
}
diff --git a/dump.rdb b/dump.rdb
index 7ecf043..7984b5f 100644
Binary files a/dump.rdb and b/dump.rdb differ