注册
 找回密码
 注册
江西广告网
查看: 307|回复: 0
打印 上一主题 下一主题

一个非常实用的关于checkboxtree小例子

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-9 09:47:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
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; } }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表