# Java-Tree **Repository Path**: old-george/java-tree ## Basic Information - **Project Name**: Java-Tree - **Description**: Java 树形结构示例代码 - **Primary Language**: Java - **License**: LGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-14 - **Last Updated**: 2025-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: 树形结构, Swing, tree, GUI, 数据结构 ## README # 老乔树形结构示例程序 ## George Java Tree GUI v1.0 #### 介绍 Java 树形结构示例代码,包括树形结构构建,树形菜单渲染,递减下拉选择框渲染,树形结构遍历等。 使用Java Swing作为界面开发框架。 构建树形结构通常有以下4种方式: 1. 使用“递归”方式,注意,递归方式需要在递归外定义最大递归深度,防止原始数据中存在节点环,导致跳不出递归; 2. 使用使用栈(Stack)- 深度优先的方式构建树形结构; 3. 使用队列(Queue)- 广度优先的方式构建树形结构; 4. 使用“两遍扫描”法构建树形结构。 -- ------ 本应用使用第1种方式:递归方式构建树形数据结构。 树形结构的数据,来自三张数据库表,分别是: 1. data_skill_classification:技能分类表 2. data_dev_lang:开发语言表 3. data_platform:开发语言支持的平台表 -- --- 本程序中使用XML文件模拟数据库表,xml文件位于:assets目录下。 -- --- - 【注意】:本程序运行需要Java 11以上版本 - 【注意】:本人开发环境为苹果 MacOS 操作系统,所以本代码工程下的startup.bat 启动脚本,是我盲写的,并没有找windows电脑试过,如果启动失败,请你自行修改bat启动脚本。 -- --- #### 运行应用 1. 在IntelliJ IDEA中运行项目 直接运行com.georgeinfo.study.tree.Main 类即可查看效果,效果图如下: ![George Java Tree GUI运行效果图](assets/images/java-tree-gui.png) 【注意】:如果您的操作系统是MacOS,在IDEA中运行Main类时,需要先设置JVM参数如下: ```shell --add-opens java.desktop/com.apple.eawt=ALL-UNNAMED ``` 2. 如果您想直接在文件夹中运行: -- ---------- - 运行前,请先使用maven【编译并打包整个代码工程(***clean->compile->package***)】,确保**{project}/java-tree-gui/target/** 目录下有:**java-tree-gui-1.0-SNAPSHOT-jar-with-dependencies.jar** 这个可执行jar文件。 - 编译并打包后,修改代码工程目录下,对应你当前操作系统的启动脚本,将启动脚本中的JAVA_HOME变量值改为你本地JDK的完整目录路径, 如我自己的JAVA_HOME是: ```shell JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home ``` - 改完后就可以按照如下操作系统类型,点击对应的启动脚本文件: | Windows下点击 | MacOS下点击 | Linux下点击 | |------|--------------------------|---------------------| | startup.bat | startup.command | startup.sh | | 直接双击 | chmod +x startup.command | chmod +x startup.sh | #### 代码工程结构 ![代码工程结构及入口指示](assets/images/code-struct.png) #### 三张数据库表的关系是 ![数据库表关系](assets/images/table-struct.png) #### 联系及讨论 1. [您可以在本项目仓库的评论区进行讨论](https://gitee.com/old-george/java-tree/issues) - 码云issues 2. 也可以给我发邮件:georgeworld (at) qq (dot) com