# 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 类即可查看效果,效果图如下:

【注意】:如果您的操作系统是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 |
#### 代码工程结构

#### 三张数据库表的关系是

#### 联系及讨论
1. [您可以在本项目仓库的评论区进行讨论](https://gitee.com/old-george/java-tree/issues) - 码云issues
2. 也可以给我发邮件:georgeworld (at) qq (dot) com