在网上找了相关代码经过修改终于成功啦。
客户端实现代码:
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; } }
因为一次性从数据库中抓取所有文件夹,不知道这样会不会影响性能。