江西广告网
标题:
一个非常实用的关于checkboxtree小例子
[打印本页]
作者:
有梦好甜蜜
时间:
2009-2-5 10:37
标题:
一个非常实用的关于checkboxtree小例子
package tree; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.jface.viewers.CheckboxTreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Item; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; import org.eclipse.swt.widgets.Widget; public class TE { private Tree tree; protected Shell shell; /** * Launch the application * @param args */ public static void main(String[] args) { try { TE window = new TE(); window.open(); } catch (Exception e) { e.printStackTrace(); } } /** * Open the window */ public void open() { final Display display = Display.getDefault(); createContents(); shell.open(); shell.layout(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } } /** * Create contents of the window */ protected void createContents() { shell = new Shell(); shell.setSize(500, 375); shell.setText("SWT Application"); final CheckboxTreeViewer checkboxTreeViewer = new CheckboxTreeViewer(shell, SWT.BORDER); tree = checkboxTreeViewer.getTree(); tree.setBounds(23, 48, 459, 260); checkboxTreeViewer.setContentProvider(new Content()); checkboxTreeViewer.setLabelProvider(new Label()); checkboxTreeViewer.setInput(getInputContent()); /* Parent []p = new Parent[1]; p[0] = new Parent(); p[0].setName("小一"); List<Child> ls = new ArrayList<Child>(); Child c1 = new Child(); c1.setName("小一一"); ls.add(c1); p[0].setChild(ls);*/ checkboxTreeViewer.expandAll(); String []obj = new String[2]; obj[0] = "小一"; obj[1] = "小二二"; setChecked(obj, tree); // } private void setChecked(String [] obj, Tree tree) { Map map = new HashMap(); for(int i = 0; i < obj.length; i ) { map.put(obj[i], obj); } internalSetChecked(map, tree); } private Item[] getChildren(Widget o) { if (o instanceof TreeItem) { return ((TreeItem) o).getItems(); } if (o instanceof Tree) { return ((Tree) o).getItems(); } return null; } private void internalSetChecked(Map checkedElements, Widget widget) { Item[] items = getChildren(widget); for (int i = 0; i < items.length; i ) { TreeItem item = (TreeItem) items[i]; Object data = item.getData(); if (data != null) { String temp = ((IName)data).getName(); boolean checked = checkedElements.containsKey(temp); if (checked != item.getChecked()) { item.setChecked(checked); } } internalSetChecked(checkedElements, item); } } private List getInputContent() { List<
arent> lst = new ArrayList<
arent>(); Parent p1 = new Parent(); p1.setName("小一"); List<Child> ls = new ArrayList<Child>(); Child c1 = new Child(); c1.setName("小一一"); ls.add(c1); p1.setChild(ls); Parent p2 = new Parent(); p2.setName("小二"); List<Child> lss = new ArrayList<Child>(); Child c2 = new Child(); c2.setName("小二二"); lss.add(c2); p2.setChild(lss); lst.add(p1); lst.add(p2); return lst; } }
欢迎光临 江西广告网 (http://bbs.jxadw.com/)
Powered by Discuz! X3.2