展开全部
package javaTEST.JTree;
import java.awt.Dimension;
import java.io.ObjectInputStream;
import java.net.URL;
import java.net.URLConnection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Administrator
*/
public class ParamTree {
public HashMap paramMap = new HashMap();
public String getTreeNodeValue(JTree tree) {
TreeNode node = (DefaultMutableTreeNode) tree.getLastSelectedPathComponent();
String selectItem = node.toString();
while (node.getParent() != null) {
node = node.getParent();
selectItem = selectItem + " : " + node.toString();
}
selectItem = selectItem.trim();
if (selectItem.charAt(selectItem.length() - 1) == ':') {
selectItem = selectItem.substring(0, selectItem.length() - 2).trim();
}
return selectItem;
}
public JTree generateTree() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("");
DefaultMutableTreeNode temp = null;
DefaultMutableTreeNode[] branchesNode = new DefaultMutableTreeNode[5];
branchesNode[0] = root;
ResultSet rs = getParamData();
int flag = 2;
int poslen = 4;
try {
while (rs.next()) {
String pos = rs.getString(1).trim();
String type = rs.getString(2).trim();
String des = rs.getString(3).trim();
poslen = pos.length();
System.out.println(poslen);
if (type.equals("B")) {
if (poslen > flag) {
temp = new DefaultMutableTreeNode(des);
branchesNode[((flag - 1)) / 2].add(temp);
flag = poslen;
branchesNode[(flag - 1) / 2] = temp;
} else if (poslen == flag) {
temp = new DefaultMutableTreeNode(des);
branchesNode[(flag - 3) / 2].add(temp);
branchesNode[(flag - 1) / 2] = temp;
} else {
branchesNode[(flag - 1) / 2] = null;
temp = new DefaultMutableTreeNode(des);
flag = poslen;
branchesNode[(flag - 3) / 2].add(temp);
branchesNode[(flag - 1) / 2] = temp;
}
} else if (type.equals("C")) {
int indexOf = des.indexOf(':');
if (indexOf != -1) {
des = des.substring(0, indexOf - 1).trim();
}
if (poslen > flag) {
temp = new DefaultMutableTreeNode(des);
branchesNode[(flag - 1) / 2].add(temp);
} else if (poslen == flag) {
temp = new DefaultMutableTreeNode(des);
branchesNode[(flag - 3) / 2].add(temp);
branchesNode[(flag - 1) / 2] = null;
flag -= 2;
} else {
branchesNode[(flag - 1) / 2] = null;
temp = new DefaultMutableTreeNode(des);
flag = poslen;
branchesNode[(flag - 3) / 2].add(temp);
branchesNode[(flag - 1) / 2] = null;
flag -= 2;
}
}
}
} catch (SQLException ex) {
ex.printStackTrace();
}
JTree tree = new JTree();
// DefaultTreeCellRenderer dtcr = (DefaultTreeCellRenderer) tree.getCellRenderer();
// ImageIcon icon = new ImageIcon("D:\\zyy\\unfolding.JPG");
// dtcr.setOpenIcon(icon);
// icon = new ImageIcon("D:\\zyy\\folding.JPG");
// dtcr.setClosedIcon(icon);
tree.setModel(new DefaultTreeModel(root));
tree.setRootVisible(false);
tree.setShowsRootHandles(true);
return tree;
}
public ParamTree() {
}
public ResultSet getParamData() {
ResultSet rs = null;
MysqlUtil mysqlUtil = null;
try {
mysqlUtil = new MysqlUtil("数据库名");
// String sql = "select Param_Position,Param_Type,Description from repax_static_histogram_paramlist order by Param_Position";
String sql = "select 位置62616964757a686964616fe4b893e5b19e31333262346532(0101),类型(B),显示名称 from 表名 order by 位置";
rs = mysqlUtil.execute(sql);
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
// if(util!=null){
// util.release();
// }
}
return rs;
}
public static void main(String[] args) throws SQLException {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
} catch (Exception ex) {
}
ParamTree generateParamTree = new ParamTree();
JTree tree = generateParamTree.generateTree();
JScrollPane jsp = new JScrollPane(tree);
JFrame jf = new JFrame("TREE");
jf.setSize(new Dimension(500, 300));
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(jsp);
jf.setVisible(true);
}
}
这是一个可直接运行的程序,里面用到一个类mysqlUtil
mysqlUtil是自己写的一个连接mysql数据库的类,你可以自己写一个,反正只要把RS就是你需要的数据读取出来就OK了,把程序里那段sql语句中的表名字段名换成你需要的,这个类是同事写的,我懒得改了,所以需要你对数据库进行一点更改,你那行IBBH就是程序中写到的位置,你需要把那一行所有的数据前面加2个数字,随便加什么,否则不会显示只有2位的记录,另要加一列,区分是叶子结点还是根节点,叶子结点标记为C,非叶子节点标记为B
里面有些不必要的东西,你看懂了删掉也没关系,因为这个是精简了的,我们本身这个类要实现的功能要多一些
本回答由提问者推荐
已赞过
已踩过<
你对这个回答的评价是?
评论
收起