部门有上级部门,希望能从数据库中查询出部门,及上级部门,然后动态生成树
怎么实现呢? for循环写不好,希望能有人提供代码参考
谢谢
怎么实现呢? for循环写不好,希望能有人提供代码参考
谢谢
解决方案 »
- java.net.SocketException: Connection timed out
- 怎样打印出一个文件所在文件夹的路径?
- 菜鸟问题,快来接分啦
- 那位大侠使用过java的media这个类
- IOStream 问题,help,help!!
- 求助thinking in java后面习题的解答!!!
- 各位XDJM:谁有JAVA语言程序设计的讲义,电子版的都行。谢谢,收到马上结贴!
- java子类中能调用其它子类方法吗
- Java读取文件乱码的问题
- 请问如何在一个jar包中删除一些文件?比如jre中自带的rt.jar?
- 关于Java正则查找问题
- JAVASCRIPT在图片中取一个坐标点,鼠标点住左键拉伸一定区域,我想要得到这个点的坐标x,y值,还有拉伸一定区域的长,宽值。哪位js高手帮我看看怎么弄
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.tree.*;
import java.awt.event.*;
public class test7 extends JFrame {
JButton bt=new JButton("Change");
JTree tree;
DefaultTreeModel model;
MyTreeNode node;
Object[][] obj={{"root","D"},{"root","A"},{"root","B"},{"A","A1"},{"B","B1"},
{"B","B2"},{"C","X"}};
Object[][] obj2={{"x","1"},{"1","2"},{"2","3"}};
DoubleVector dv=new DoubleVector(obj,2);
JPanel panel=(JPanel)this.getContentPane();
public test7() {
jbInit();
}
void jbInit(){
Object[][] o=dv.toDoubleArray();
node=new MyTreeNode(o[0][0]);
node.setData(o);
model=new DefaultTreeModel(node);
tree=new JTree(model);
panel.setLayout(new BorderLayout());
panel.add(new JScrollPane(tree),BorderLayout.CENTER);
bt.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
node=new MyTreeNode(obj2[0][0]);
node.setData(obj2);
model.setRoot(node);
}
});
panel.add(bt,BorderLayout.SOUTH);
this.setSize(400,300);
this.setVisible(true);
}
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
System.exit(0);
}
}
public static void main(String[] args) {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
test7 test7 = new test7();
}
}
class MyTreeNode extends DefaultMutableTreeNode{
Object[][] obj;
public MyTreeNode(Object o){
super(o);
}
public void setData(Object[][] o){
obj=o;
}
public boolean isLeaf() {
return false;
}
public int getChildCount() {
loadChildren();
return super.getChildCount();
}
protected void loadChildren(){
TreeSet set=new TreeSet();
for(int i=0;i<obj.length;i++){
if(getUserObject().equals(obj[i][0])){
set.add(obj[i][1]);
}
}
for(int i=0;i<set.size();i++){
MyTreeNode mtn=new MyTreeNode(set.toArray()[i]);
mtn.setData(obj);
insert(mtn,i);
}
}
}
class DoubleVector extends Vector{
private Vector data;
public DoubleVector(){
data=new Vector();
}
public DoubleVector(Object[][] obj,int col){
data=new Vector();
for(int i=0;i<obj.length;i++){
Vector v=new Vector();
for(int j=0;j<col;j++){
v.add(obj[i][j]);
}
data.add(v);
}
}
public int getRowCount(){
return data.size();
}
public int getColCount(){
if(!data.isEmpty()){
return ((Vector)data.get(0)).size();
}
else{
return 0;
}
}
public void insertVector(Object v){
data.add(v);
}
public void insertVector(Object v,int row){
data.insertElementAt(v,row);
}
public boolean removeVector(Object v){
return data.remove(v);
}
public Object removeVector(int row){
return data.remove(row);
}
public void set(Object value,int row,int col){
Vector temp=(Vector)data.get(row);
temp.set(col,value);
}
public Object[][] toDoubleArray(){
Object[][] rt=new Object[getRowCount()][getColCount()];
Vector temp;
for(int i=0;i<data.size();i++){
temp=(Vector)data.get(i);
for(int j=0;j<temp.size();j++){
rt[i][j]=temp.get(j);
}
}
return rt;
}
}
而且我的是从数据库中获得数据存到数组当中去的
不太明白
LZ是什么意思?
--测试数据
DECLARE @t TABLE(ID char(3),PID char(3),Name nvarchar(10))
INSERT @t SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'--深度排序显示处理
--生成每个节点的编码累计(相同当单编号法的编码)
DECLARE @t_Level TABLE(ID char(3),Level int,Sort varchar(8000))
DECLARE @Level int
SET @Level=0
INSERT @t_Level SELECT ID,@Level,ID
FROM @t
WHERE PID IS NULL
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level,b.Sort+a.ID
FROM @t a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END--显示结果
SELECT SPACE(b.Level*2)+'|--'+a.Name
FROM @t a,@t_Level b
WHERE a.ID=b.ID
ORDER BY b.Sort
/*--结果
|--山东省
|--烟台市
|--招远市
|--青岛市
|--四会市
|--清远市
|--小分市
--*/LZ可以试下用SQL直接写出来