tree

//分类显示数据库里的内容­

package mypkg; ­

import java.awt.*; ­

import java.awt.event.*; ­

import javax.swing.*; ­

import javax.swing.event.*; ­

import java.util.*; ­

import java.sql.*; ­

import java.sql.Statement; ­

import javax.swing.table.*; ­

import javax.swing.tree.*; ­

/** ­

* ­

* @author Administrator ­

*/ ­

public class ClassBrowse extends JFrame implements TreeSelectionListener { ­

Statement stmt; ­

ResultSet rs,rsl; ­

DefaultTableModel dtm;//定义数据模型 ­

String[]title;//表头数组 ­

JTree tree;//树 ­

JTable table; ­

DefaultTreeModel treeModel = null;//定义一个默认的树模型,用于建立树 ­

JScrollPane scroll1,scroll2;//定义两个滚动面板 ­

JSplitPane splitPane;//定义一个分割面板 ­

private Object con; ­

public ClassBrowse(){ ­

­

try{ ­

stmt = ConnectServer1. con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ­

DefaultMutableTreeNode root = new DefaultMutableTreeNode("专业");//根 ­

treeModel = new DefaultTreeModel(root);//建立树模型 ­

initTree(root,0);//调用递归函数建立树模型 ­

tree = new JTree(treeModel);//利用树模型建立树 ­

scroll1 = new JScrollPane(tree); ­

tree.addTreeSelectionListener(this); ­

rs = stmt.executeQuery("select classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名" + ­

" from xsda,classclass where xsda.classid = classclass.id"); ­

ResultSetMetaData dbmd = rs.getMetaData();//得到记录集的元数据,建立表头数组 ­

title = new String[dbmd.getColumnCount()]; ­

for(int i=1;i <=dbmd.getColumnCount();i++) ­

title[i-1] = dbmd.getColumnName(i); ­

dtm = new DefaultTableModel(null,title);//建立表格数据模型 ­

table = new JTable(dtm);//利用数据模型建立表格 ­

scroll2 =new JScrollPane(table); ­

initTable();//建立表 ­

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,scroll1,scroll2); ­

splitPane.setOneTouchExpandable(true); ­

splitPane.setDividerLocation(200); ­

this.getContentPane().add(splitPane,null);} ­

catch(SQLException e){System.out.println(e);} ­

setTitle("分类查询学生信息"); ­

setSize(500,400); ­

setVisible(true); ­

­

} ­

void initTree(DefaultMutableTreeNode root,int id){//这是递归函数 ­

DefaultMutableTreeNode node = null;//定义节点 ­

try{ ­

Statement stmt = ConnectServer1. con. createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ­

ResultSet rs = stmt.executeQuery("select * from classclass where parent =" + id);//查询班级类表 ­

while(rs.next()){ ­

int nno = rs.getInt("id");//取得分类ID ­

String nname = rs.getString("name").trim();//取得分类名称 ­

node = new DefaultMutableTreeNode(nname);//建立树的节点 ­

treeModel.insertNodeInto(node, root, root.getChildCount());//插入节点 ­

initTree(node,nno);} ­

­

} ­

catch(Exception e){} ­

finally{ ­

try{ ­

rs.close(); ­

}catch(Exception e){} ­

} ­

­

} ­

public void valueChanged(TreeSelectionEvent e){ ­

JTree tree=(JTree)e.getSource(); ­

//利用JTree的getLastSelectedPathCoponent()方法取得目前选取的节点 ­

DefaultMutableTreeNode selectionNode = (DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); ­

String name = ((String)selectionNode.getUserObject()); ­

String sql = "selcet classclass.name as 班级,xsda.no as 学号,xsda.name as 姓名 from xsda,classclass where xsda.classid = classclass.id"; ­

if(!name.equals("专业")) ­

sql=sql + "and classid in(select id from classclass where rtrim(ltrim(str(id)))like(select ltrim(rtrim(str(id)))+'%'from classclass where rtrim(ltrim(name))='"+name+"'))"; ­

try{ ­

rs = stmt.executeQuery(sql);//利用嵌套查询查出所有数据 ­

initTable(); ­

} catch(Exception ee){} ­

} ­

void initTable(){ ­

dtm.setRowCount(0); ­

try{ ­

rs.beforeFirst(); ­

while(rs.next()){ ­

Vector v1=new Vector(); ­

for(int i=1;i <=title.length;i++) ­

v1.addElement(rs.getString(i)); ­

dtm.addRow(v1); ­

} ­

}catch(SQLException e){e.printStackTrace();} ­

dtm.fireTableStructureChanged(); ­

­

} ­

public static void main(String arg[]){ ­

JFrame.setDefaultLookAndFeelDecorated(true); ­

Font font = new Font("JFrame",Font.PLAIN,14); ­

Enumeration keys = UIManager.getLookAndFeelDefaults().keys(); ­

while(keys.hasMoreElements()){ ­

Object key = keys.nextElement(); ­

if(UIManager.get(key)instanceof Font) ­

UIManager.put(key, font); ­

­

} ­

if(!ConnectServer1.conn("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=xsgl","sa","")){ ­

JOptionPane.showMessageDialog(null, "连接数据库失败"); ­

System.exit(0);//关闭数据库 ­

} ­

new ClassBrowse(); ­

­

} ­

} ­

­

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/huang404/archive/2009/06/27/4302608.aspx
$(function(){ $.fn.extend({ SimpleTree:function(options){ //初始化参数 var option = $.extend({ click:function(a){ } },options); option.tree=this; /* 在参数对象中添加对当前菜单树的引用,以便在对象中使用该菜单树 */ option._init=function(){ /* * 初始化菜单展开状态,以及分叉节点的样式 */ this.tree.find("ul ul").hide(); /* 隐藏所有子级菜单 */ this.tree.find("ul ul").prev("li").removeClass("open"); /* 移除所有子级菜单父节点的 open 样式 */ this.tree.find("ul ul[show='true']").show(); /* 显示 show 属性为 true 的子级菜单 */ this.tree.find("ul ul[show='true']").prev("li").addClass("open"); /* 添加 show 属性为 true 的子级菜单父节点的 open 样式 */ }/* option._init() End */ /* 设置所有超链接不响应单击事件 */ this.find("a").click(function(){ $(this).parent("li").click(); return false; }); /* 菜单项 接受单击 */ this.find("li").click(function(){ /* * 当单击菜单项 * 1.触发用户自定义的单击事件,将该 标签中的第一个超链接做为参数传递过去 * 2.修改当前菜单项所属的子菜单的显示状态(如果等于 true 将其设置为 false,否则将其设置为 true) * 3.重新初始化菜单 */ option.click($(this).find("a")[0]); /* 触发单击 */ /* * 如果当前节点下面包含子菜单,并且其 show 属性的值为 true,则修改其 show 属性为 false * 否则修改其 show 属性为 true */ /* if($(this).next("ul").attr("show")=="true"){ $(this).next("ul").attr("show","false"); }else{ $(this).next("ul").attr("show","true"); }*/ /* 初始化菜单 */ option._init(); }); /* 设置所有父节点样式 */ this.find("ul").prev("li").addClass("folder"); /* 设置节点“是否包含子节点”属性 */ this.find("li").find("a").attr("hasChild",false); this.find("ul").prev("li").find("a").attr("hasChild",true); /* 初始化菜单 */ option._init(); }/* SimpleTree Function End */ }); });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值