重新帮你写了数据库相关的语句。
但是你必须得做响应的修改才能使用。
import java.sql.Connectionimport java.sql.PreparedStatement
import java.sql.ResultSet
import java.sql.SQLException
import javax.swing.JFrame
import javax.swing.JScrollPane
import javax.swing.JTree
import javax.swing.tree.DefaultMutableTreeNode
public class SwingTree extends JFrame {
public static class MyTreeNode extends DefaultMutableTreeNode {
public MyTreeNode(Object obj) {
super(obj)
}
public MyTreeNode(MyTreeNode parent, Object object) {
super(object)
parent.add(this)
}
public MyTreeNode findOrAddChild(Object obj) {
for (int i = 0 i < getChildCount() i++) {
MyTreeNode node = (MyTreeNode) getChildAt(i)
if (node.valueEquals(obj)) {
return node
}
}
return new MyTreeNode(this, obj)
}
public boolean valueEquals(Object obj) {
return getUserObject().equals(obj)
}
}
private MyTreeNode rootNode
public static void main(String[] args) {
new SwingTree()
}
public SwingTree() {
this.setTitle("Swing Tree")
this.setSize(800, 600)
this.setDefaultCloseOperation(EXIT_ON_CLOSE)
initNode()
JTree tree = new JTree(rootNode)
this.add(new JScrollPane(tree))
this.setVisible(true)
}
private void initNode() {
rootNode = new MyTreeNode("清华大学")
try {
String sql = "select * from student_t"
PreparedStatement preStmt = getConnection().prepareStatement(sql)
ResultSet query = preStmt.executeQuery()
while (query.next()) {
String college = query.getString("college")
String department = query.getString("department")
String clazz = query.getString("clazz")
String student = query.getString("student")
student += " " + query.getString("phone")
addNode(college, department, clazz, student)
}
} catch (SQLException e) {
e.printStackTrace()
}
}
public Connection getConnection() {
return null
}
public void addNode(String college, String department, String clazz, String student) {
rootNode.findOrAddChild(college)
.findOrAddChild(department)
.findOrAddChild(clazz)
.findOrAddChild(student)
}
}
color.add(MutableTreeNode newChild),里面要加你要加入的节点,以下的是API中的解释
add
public void add(MutableTreeNode newChild)从其父节点移除 newChild,并通过将其添加到此节点的子数组的结尾,使其成为此节点的子节点。
参数:
newChild - 作为此节点的子节点添加的节点
抛出:
IllegalArgumentException - 如果 newChild 为 null
IllegalStateException - 如果此节点不允许拥有子节点
下边给你一个例子。以前做的,循环往树里面加入节点
public void treeInitialize(){//jtree组件的初始化
DefaultMutableTreeNode root=new DefaultMutableTreeNode(year+"年")//新建一个DefaultMutableTreeNode对象,根节点为"2007年"
DefaultMutableTreeNode month//月
DefaultMutableTreeNode day//日
for(int i=1i<=12i++){
month=new DefaultMutableTreeNode(i+"月")//利用循环添加12个月节点
root.add(month)
if(i==1||i==3||i==5||i==7||i==8||i==10||i==12) {//判断是否31天
for(int j=1j<=31j++){
day=new DefaultMutableTreeNode(j+"日")//添加日节点
month.add(day)
}
}else if(i==2){//判断是否28天
if(year%4==0&&year%100!=0||year%400==0){//测试是否闰年
for(int j=1j<=29j++){
day=new DefaultMutableTreeNode(j+"日")
month.add(day)
}}else{
for(int j=1j<=28j++){
day=new DefaultMutableTreeNode(j+"日")
month.add(day)
}
}
}else{
for(int j=1j<=30j++){//判断是否28天
day=new DefaultMutableTreeNode(j+"日")
month.add(day)
}
}
}
TreeModel treeModel = new DefaultTreeModel(root)//设置jtree的模式为root
jTree1.setModel(treeModel)
}