利用JDOM从数据库读取信息生成XML树再到客户端实现

在网上找了相关代码经过修改终于成功啦。

客户端实现代码:

package cn.teamserver.tmp.xmltotree.tree;

import java.net.URL;
import java.util.List;

import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
public class XMLToTree {

    public static void main(String[] args) {
        XMLToTree window = new XMLToTree();
        window.open();
    }

    public void open() {
        final Display display = new Display();
        final Shell shell = new Shell();
        shell.setLayout(new FillLayout());
        ui(shell);
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch())
                display.sleep();
        }
    }

    private void ui(Shell shell) {
        Composite c = new Composite(shell, SWT.NONE);
        c.setLayout(new FillLayout());

        TreeViewer tv = new TreeViewer(c, SWT.BORDER);
        tv.setContentProvider(new ContentProvider());
        tv.setLabelProvider(new LableProvider());
        tv.setInput(new Object());//设置输入对象的方法与前面相同

    }
    private static final class ContentProvider implements ITreeContentProvider {
    	SAXBuilder builder = new SAXBuilder();
    	Document doc;
    	Element root;
    	ContentProvider(){
    		try{
        	doc = builder.build(new URL("http://localhost:8080/TeamServer/getTree").openStream());
        	root = doc.getRootElement();		
        	} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    	}
        public Object[] getElements(Object inputElement) {
        	List list=root.getChildren();
            TreeNode obj[] =new TreeNode[list.size()];
            
            for(int i=0;i 0;
        }
        public Object getParent(Object element) {
            return null;
        }
        public void dispose() {}
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {}
    }
    private static final class LableProvider implements ILabelProvider {
        public Image getImage(Object element) {
            return null;
        }
        public String getText(Object element) {
            return ((TreeNode) element).getName();

        }

        public void addListener(ILabelProviderListener listener) {}

        public void dispose() {}

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {}
    }
}
 
package cn.teamserver.tmp.xmltotree.tree;

import org.jdom.Element;

public class TreeNode {
	private String id;
	private String name;
	private String link;
	private Element e;
	public TreeNode(String id, String name, String link,Element e) {
		this.id = id;
		this.name = name;
		this.link = link;
		this.e=e;
	}

	public String getId() {
		return id;
	}

	public void setId(String Id) {
		this.id = Id;
	}

	public void setName(String Name) {
		this.name = Name;
	}

	public String getName() {
		return name;
	}

	public String toString() {
		return name;
	}

	public String getLink() {
		return link;
	}

	public void setLink(String link) {
		this.link = link;
	}

	public Element getE() {
		return e;
	}

	public void setE(Element e) {
		this.e = e;
	}
}
 
因为一次性从数据库中抓取所有文件夹,不知道这样会不会影响性能。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值