在网上找了相关代码经过修改终于成功啦。
客户端实现代码:
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;
}
}
因为一次性从数据库中抓取所有文件夹,不知道这样会不会影响性能。
本文介绍了一种将XML数据转换为树形结构的方法,并提供了一个具体的Java实现案例。通过解析XML文件,构建树形视图,展示了如何利用Eclipse的SWT/JFace组件进行界面展示。

303

被折叠的 条评论
为什么被折叠?



