淘先锋技术网

首页 1 2 3 4 5 6 7

在Java Swing中,JTree是一个非常强大的组件,它可以用来表示树形结构数据中的节点,而MySQL则是一个流行的关系型数据库。这篇文章将介绍如何在Java Swing应用程序中使用JTree和MySQL来显示和管理树形结构数据。

首先,我们需要建立一个数据库来存储我们的数据。假设我们要存储一个公司的组织架构,我们可以创建一个名为“company”的数据库,并在其中创建一个名为“employee”的表。

CREATE DATABASE company;
USE company;
CREATE TABLE employee (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
title VARCHAR(255),
manager_id INT
);

接下来,我们需要在Java Swing应用程序中创建一个JTree。我们可以使用DefaultMutableTreeNode类来创建一个节点,并将节点添加到树中。

DefaultMutableTreeNode root = new DefaultMutableTreeNode("公司");
DefaultMutableTreeNode hr = new DefaultMutableTreeNode("人力资源部");
DefaultMutableTreeNode it = new DefaultMutableTreeNode("信息技术部");
root.add(hr);
root.add(it);
JTree tree = new JTree(root);

现在我们需要从MySQL数据库中读取数据,并将其添加到JTree中。我们可以使用JDBC来连接和查询数据库,并使用DefaultMutableTreeNode类来创建节点。

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/company", "root", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM employee");
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.getString("name");
String title = rs.getString("title");
int manager_id = rs.getInt("manager_id");
DefaultMutableTreeNode node = new DefaultMutableTreeNode(name + " (" + title + ")");
if (manager_id == 0) {
root.add(node);
} else {
Enumeration e = root.depthFirstEnumeration();
while (e.hasMoreElements()) {
DefaultMutableTreeNode n = (DefaultMutableTreeNode)e.nextElement();
if (n.getUserObject().equals(manager_id)) {
n.add(node);
break;
}
}
}
}
rs.close();
stmt.close();
conn.close();

代码中的循环遍历所有数据库记录,并创建对应的节点。如果记录的manager_id为0,则将节点添加到根节点下,否则需要在树中搜索管理者节点,并将新节点添加为它的子节点。

最后,我们需要使用JFrame来创建一个窗口,并将JTree添加到其中。

JFrame frame = new JFrame();
frame.add(new JScrollPane(tree));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 400);
frame.setVisible(true);

现在我们已经创建了一个可以显示和管理树形结构数据的Java Swing应用程序。当数据库中的数据发生变化时,我们只需要重新读取数据并更新JTree即可。