import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.sql.*;
import java.io.*;
import java.util.*;
////////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
class Console
{
public static String title(Object o)
{
String t=o.getClass().toString();
if(t.indexOf("class") != -1)
t=t.substring(6);
return t;
}
public static void setupClosing(JFrame frame)
{
frame.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public static void run(JFrame frame,int width,int height)
{
setupClosing(frame);
frame.setSize(width,height);
frame.setVisible(true);
}
public static void run(JApplet applet,int width,int height)
{
JFrame frame=new JFrame(title(applet));
setupClosing(frame);
frame.getContentPane().add(applet);
frame.setSize(width,height);
applet.init();
applet.start();
frame.setVisible(true);
}
public static void run(JPanel panel,int width,int height)
{
JFrame frame=new JFrame(title(panel));
setupClosing(frame);
frame.getContentPane().add(panel);
frame.setSize(width,height);
frame.setVisible(true);
}
}
///////////////////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//================================================
class MytreeNode extends DefaultMutableTreeNode
{
String mydata,mylable;
MytreeNode(String ss)
{
super(ss);
}
public void setMydata(String s_mydata)
{
mydata=s_mydata;
}
public String getMydata()
{
return mydata;
}
public void setMylable(String s_mydata)
{
mylable=s_mydata;
}
public String getMylable()
{
return mylable;
}
}
//===============================================
public class Trees_test extends JApplet implements TreeModelListener
{
JTree tree;
public void init()
{
String url="jdbc:odbc:ypower";
String user="ypower";
String pass="ypower";
String table="lineway";
String index="id";
String parent="parentid";
String lable="simname";
cjqTree ttt=new cjqTree(url,user,pass,table,index,parent,lable);
try
{
tree=(JTree)ttt.getTree();
}catch(ClassNotFoundException e){System.out.println("加载数据库驱动程序的时候出了错误!");}
catch(InstantiationException e){System.out.println("InstantiationException");}
catch(IllegalAccessException e){System.out.println("IllegalAccessException");}
catch(SQLException e){System.out.println("SQLException");System.exit(0);}
//树可以滚动
Container cp=getContentPane();
cp.add(new JScrollPane(tree),BorderLayout.CENTER);
}
public static void main(String[] args)
{
Console.run(new Trees_test(),500,500);
}
////////////////////////////////////////////////////////////////////////////////////////
//实现TreeModelListener提供的接口///////////////////////////////////////////////////////
//Void treeNodesChanged(TreeModelEvent e):当节点改变时系统就会云调用这个方法。/////////
//Void treeNodesInserted(TreeModelEvent e):当新增节时系统就会去调用这个方法。//////////
//Void treeNodesRemoved(TreeModeEvent e):当删除节点时系统就会去调用这个方法。//////////
//Void treeStructureChanged(TreeModelEvent e):当树结构改变时系统就会去调用这个方法。///
////////////////////////////////////////////////////////////////////////////////////////
public void treeNodesInserted(TreeModelEvent e)
{//当增加新节点的时候返回当前节点的所有的子节点
}
public void treeNodesChanged(TreeModelEvent e)
{
}
public void treeNodesRemoved(TreeModelEvent e)
{
}
public void treeStructureChanged(TreeModelEvent e)
{
}
/////////////////////////////////////////////////////////////////////////////////////////
//TreeModelEvent方法: /////////
//int[] getChildIndices():返回子节点群的索引值。 /////////
//Object[] getChildren():返回子节点群. ////////
//Object[] getPath():返回Tree中一条path上(从root nod到leaf node)的节点。/////
//TreePath getTreePath():取得目前位置的Tree Path. /////
//String toString():取得蝗字符串表示法. /////
/////////////////////////////////////////////////////////////////////////////////////////
}
//====================================================================
class cjqTree
{
private
JTree mytree;
DefaultTreeModel mymodel;
Connection conn;
Statement myst;
String mysql;
ResultSet myresult;
String myurl,myuser,mypass,mytable,myindex,myparent,mylable;
cjqTree(String url,String user,String pass,String table,String index,String parent,String lable)
{
myurl=url;
myuser=user;
mypass=pass;
mytable=table;
myindex =index;
myparent=parent;
mylable=lable;
}
public JTree getTree() throws ClassNotFoundException,
InstantiationException,
IllegalAccessException,
SQLException
{
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}catch(ClassNotFoundException
e){System.out.println("加载驱动的时候出了错误");System.exit(0);}
conn=DriverManager.getConnection(myurl,myuser,mypass);
//myst=conn.createStatement();
myst= conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
//mysql="select id,simname,name from lineway where parentid='AAAA'";
mysql="Select "+ mylable+","+myindex +" from "+mytable +" where "+myparent+"='AAAA'";
myresult=myst.executeQuery(mysql);
myresult.next();
String lable_this=myresult.getString(mylable);
MytreeNode root=new MytreeNode(lable_this);
root.setMylable(lable_this);
root.setMydata(myresult.getString(myindex));
mytree=new JTree(root);
mymodel=(DefaultTreeModel)mytree.getModel();
insertNodes(root);
return mytree;
}
private void insertNodes(MytreeNode node) throws SQLException
{
String node_data;
int rcount;
node_data=node.getMydata();
mysql="select "+mylable+","+myindex +" from
"+mytable+" where "+myparent+"='"+node_data+"' order by "+myindex+"
asc";
myresult=myst.executeQuery(mysql);
System.out.println("获取查询结果数之前!");
//向当前的节点插入查询结果
System.out.println(mysql);
rcount=getResultCount(myresult);
System.out.println("获取查询结果数之后!");
if (rcount > 1)//如果当前有子节点的话就把它插入
{
MytreeNode[] children = new MytreeNode[rcount];
for(int j = 0;j<rcount;j++)
{
MytreeNode node_new=new
MytreeNode(myresult.getString(myindex)+"-"+myresult.getString(mylable));
node_new.setMylable(myresult.getString(mylable));
node_new.setMydata(myresult.getString(myindex));
children[j]=node_new;//保存当前插入的子节点
mymodel.insertNodeInto(node_new,node,node.getChildCount());
myresult.next();
}
System.out.println("已经插入当前的查询结果!!");
//如果当前点有子节点则调用insertNodes()直到把所有的对象都插入进去
for(int j = 0;j<rcount;j++)
{
insertNodes(children[j]);
}
System.out.println("已经插入所有的查询结果!!");
}
}
private int getResultCount(ResultSet result) throws SQLException//获取查询结果树并把记录移动到第一条记录
{
int i = 0;
while(result.next())
{
i++;
}
System.out.println("已经获取查询结果数:"+i);
try{
result.first();
}catch(SQLException e){System.out.println("指针移不到第一条记录!");}
return i;
}
}
//====================================================================
////////////
//DefaultMutableTreeNode:树的节点
// r=new DefaultMutableTreeNode("Lable")
// r.add(new DefaultMutableTreeNode("Lable2")
//DefaultTreeModel model;
// model=(DefaultTreeModel)tree.getModel();
// model.insertNodeInto(child,chosen,0)//插入并自动更新界面
//Jtree tree;
// tree=new Jtree(toot);
// chosen=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//返回当前选取的节点对象
//返回当前展开的节点和将要展开的节点 如何展开一个节点。
//
相关推荐
JTree的使用 JTree的使用 JTree的使用
java组件之jtree使用 10-1:使用JTree组件: 10-2:以Hashtable构造JTree: 10-3:以TreeNode构造JTree: . . . . 10-8:JTree的其他操作:
HTML转成Jtree
JTree用法及JTree使用经验总结(吐血推荐) 1、初始化 2、三个经常使用的取值函数 3、根据node得到path:4、根据Path展开到该节点 5、根据path设定该节点选定 6、选中节点的方法 7、滚动到可见位置 8、给JTree添加右键...
JTree用法大全,各种使用方法demo,介绍,并附注释。
xlm转成Jtree
Jtree的使用例子 这是类似qq的节点例子 帮助我们是简单地编码
jtree , 经典教程,jtree 例子 ,很适合初学者,和急需使用的读者,一看就会
在java中,树对象提供了用树型结构分层显示数据的视图。可以扩展和收缩视图中的单个子树。树由Swing中的JTree类实现,JTree是Jcomponent的子类。文档就介绍了JTree的使用
1. 掌握JTree应用,树节点的操作; 2. 使用JTree展数,管理对象。
java使用jtree动态实现二叉树,包含二叉树的插入删除很查找
jtree中加checkbox,实用哦。
实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。
java代码-使用java解决JTree JSON的源代码 ——学习参考资料:仅用于个人学习使用!
JAVA JTREE实例代码、JAVA JTABLE实例代码
jtree和QQ项目\使用jmenu实现QQ的好友界面
JTree的用法
JTree的例子,可以拖动节点 JTree的例子,可以拖动节点
java JTree+JTable使用样例,实现将JTree的节点内容显示到JTable中,eclipse导入maven项目 maven编译: mvn clean package
java swing 树的详细使用说明,此文档对树创建使用,都有详细的说明