SWT中treeView和tableTreeView的使用实例

 

涉及到的几个实体类:

基本节点接口:

public interface ITreeNode {

	public String getName() ;
	public void setName(String name);
	public abstract List getChild() ;
	public abstract void setChild(List child);
}

 

大学实体University,他的孩子节点是学院:

public class University implements ITreeNode{
	
	public String name;
	public List child = new ArrayList();
	

	public List getChild() {
		return child;
	}

	public void setChild(List child) {
		this.child = child;
	}

	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return name;
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		this.name = name;
		
	}
}

学院类 , 他的孩子是班级:

public class Collage implements ITreeNode {

	private String name;
	private List child = new ArrayList();
	
	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return name;
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		this.name = name;

	}

	@Override
	public List getChild() {
		// TODO Auto-generated method stub
		return child;
	}

	@Override
	public void setChild(List child) {
		// TODO Auto-generated method stub
		this.child = child;

	}

}

班级类:

public class CustomClass  implements ITreeNode{

	private String name;
	private List child = new ArrayList();
	
	@Override
	public String getName() {
		// TODO Auto-generated method stub
		return name;
	}

	@Override
	public void setName(String name) {
		// TODO Auto-generated method stub
		this.name = name;
		
	}

	@Override
	public List getChild() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void setChild(List child) {
		// TODO Auto-generated method stub
		this.child = child;
		
	}
}

TreeView的contentProvider和labelProvider:

TreeViewerContentProvider

public class TreeViewerContentProvider implements ITreeContentProvider{
	
	public TreeViewerContentProvider()
	{
		
	}
	
	
	public Object [] getChildren(Object parentElement)
	{
		
		if (parentElement instanceof University){
			
		//	System.out.println(((University) parentElement).getName());
			List childList = ((University) parentElement).getChild();
			return childList.toArray();
		}
		
		if (parentElement instanceof Collage){
			
			System.out.println(((Collage) parentElement).getName());
			List childList = ((Collage) parentElement).getChild();
			return childList.toArray();
		}
		
		return new Object[0];
	}
	
	public Object getParent(Object element)
	{
		return null;
	}
	
	public boolean hasChildren(Object element)
	{
		if (element instanceof University){

			List childList = ((University) element).getChild();
			
			if (childList.size() > 0)
				return true;
			else
				return false;
		}
		
		if (element instanceof Collage){

			List childList = ((Collage) element).getChild();
			
			if (childList.size() > 0)
				return true;
			else
				return false;
		}
		
		return false;
	}
	
	public Object[] getElements(Object inputElement)
	{
		if(inputElement instanceof List)
		{
			List list =(List)inputElement;
			return list.toArray();		
		}
		else
			return new Object[]{inputElement};
	}
	
	public void dispose(){}
	
	public void inputChanged(Viewer viewer,Object oldInput,Object newInput){
		
	}
	
}

TreeViewerLabelProvider

public class TreeViewerLabelProvider implements ILabelProvider{
	public TreeViewerLabelProvider(){
		
	}
	public Image getImage(Object element)
	{
		
		return null;
	}
	public String getText(Object element)
	{
		if (element instanceof University){

			return  ((University) element).getName();
		}
		
		if (element instanceof Collage){

			return ((Collage) element).getName();
		}
		
		if (element instanceof CustomClass){
			
			return ((CustomClass) element).getName();
		}
		return "";
	}
	
	public void addListener(ILabelProviderListener listener)
	{
		
	}
	
	public void dispose()
	{
		
	}
	
	public boolean isLabelProperty(Object element,String property)
	{
		return false;
	}
	
	public void removeListener(ILabelProviderListener listener)
	{
		
	}
	
}

 

tableTreeView的contentProvider和labelProvier

TableViewContentProvider

 

public class TableViewContentProvider implements ITreeContentProvider{

	
	@Override
	public void dispose() {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public Object[] getElements(Object inputElement) {
		// TODO Auto-generated method stub
		if(inputElement instanceof List)
    		return ((List)inputElement).toArray();
    	else 
    		return new Object[]{inputElement};
	}

	@Override
	public Object[] getChildren(Object parentElement) {
		// TODO Auto-generated method stub
		if(parentElement instanceof University){
        	List list = new ArrayList();       	
        	list.addAll(((University) parentElement).getChild());             
        	return list.toArray();       	
        }
		
		if(parentElement instanceof Collage)		{
			List list = new ArrayList();       	
			list.addAll(((Collage) parentElement).getChild());       
        	return list.toArray();
		}
        
		
		return new Object[0];
	}

	@Override
	public Object getParent(Object element) {
		// TODO Auto-generated method stub
		return null;
	}

	
	@Override
	public boolean hasChildren(Object element) {
		if(element instanceof University)
        {
			if(((University) element).getChild().size() > 0)
				return true;
			return false;
        }
		
		if(element instanceof Collage){
			
			if (((Collage) element).getChild().size() > 0)
				return true;
			return false;
		}	
		return false;
	}
}

 

 TableViewLabelProvider

public class TableViewLabelProvider implements ITableLabelProvider {

	@Override
	public void addListener(ILabelProviderListener listener) {
		// TODO Auto-generated method stub

	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub

	}

	@Override
	public boolean isLabelProperty(Object element, String property) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public void removeListener(ILabelProviderListener listener) {
		// TODO Auto-generated method stub

	}

	@Override
	public Image getColumnImage(Object element, int columnIndex) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getColumnText(Object element, int columnIndex) {
		
		if(element instanceof University)
    	        {
    		    switch (columnIndex) {
                    case 0:                    
            	          return ((University) element).getName();  
                    default:
                          return "";
                    }
    	        }

		if(element instanceof Collage)
    	        {
    		    switch (columnIndex) {          
                    case 1:
                        return ((Collage) element).getName(); 
                    default:
                        return "";
                    }
    	        }
    	
		if(element instanceof CustomClass){
    		    if(columnIndex==2)
    			return  ((CustomClass) element).getName();
    		    else
    			return "";
    	}
    	
		
    	return "";
        
	}
}

 

产生数据的工厂:

public class DataFactory {
	
	public static List getList(){
		
		
		University  ui = new University();
		ui.setName("南京航空航天大学");
		
		Collage  infoCollage = new Collage();
		infoCollage.setName("信息科学与技术学院");
		
		Collage  compuCollage = new Collage();
		compuCollage.setName("计算机科学与技术学院");
		
		ui.getChild().add(infoCollage);
		ui.getChild().add(compuCollage);
		
		CustomClass class201 = new CustomClass();
		class201.setName("201班");
		
		CustomClass class301 = new CustomClass();
		class301.setName("301班");
		
		CustomClass class401 = new CustomClass();
		class401.setName("401班");
		
		CustomClass class501 = new CustomClass();
		class501.setName("501班");
		
		infoCollage.getChild().add(class201);
		infoCollage.getChild().add(class301);
		
		compuCollage.getChild().add(class401);
		compuCollage.getChild().add(class501);
		
		List unverList = new ArrayList();
		unverList.add(ui);
		
		return unverList;
	}

}

 

对话框类:

import java.util.ArrayList;


public class TableTreeDemoDlg extends Dialog {

	protected Object result;
	protected Shell shlSwt;

	
	private List  tableTreeViewInputList = new ArrayList();
	/**
	 * Create the dialog.
	 * @param parent
	 * @param style
	 */
	public TableTreeDemoDlg(Shell parent, int style) {
		super(parent, style);
		setText("SWT Dialog");
	}

	/**
	 * Open the dialog.
	 * @return the result
	 */
	public Object open() {
		createContents();
		shlSwt.open();
		shlSwt.layout();
		Display display = getParent().getDisplay();
		while (!shlSwt.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		return result;
	}

	/**
	 * Create contents of the dialog.
	 */
	private void createContents() {
		shlSwt = new Shell(getParent(), SWT.CLOSE | SWT.RESIZE | SWT.TITLE | SWT.APPLICATION_MODAL);
		shlSwt.setSize(727, 535);
		shlSwt.setText("SWT\u6F14\u793A");
		shlSwt.setLayout(null);
		
		final TableTreeViewer tableTreeViewer = new TableTreeViewer(shlSwt, SWT.BORDER | SWT.FULL_SELECTION);
		TableTree tableTreeView = tableTreeViewer.getTableTree();
		tableTreeView.getTable().setLinesVisible(true);
		tableTreeView.getTable().setHeaderVisible(true);
		tableTreeView.setBounds(240, 10, 458, 421);
		
		TableColumn tblclmnNewColumn = new TableColumn(tableTreeView.getTable(), SWT.CENTER);
		tblclmnNewColumn.setWidth(90);
		tblclmnNewColumn.setText("University");
		
		TableColumn tblCollage = new TableColumn(tableTreeView.getTable(), SWT.CENTER);
		tblCollage.setWidth(114);
		tblCollage.setText("Collage");
		
		TableColumn tblClass = new TableColumn(tableTreeView.getTable(), SWT.CENTER);
		tblClass.setWidth(112);
		tblClass.setText("Class");
		
		TableColumn tblStuNo = new TableColumn(tableTreeView.getTable(), SWT.CENTER);
		tblStuNo.setText("StuNo");
		tblStuNo.setWidth(138);
		
		final TreeViewer treeViewer = new TreeViewer(shlSwt, SWT.BORDER);
		Tree treeView = treeViewer.getTree();
		treeView.setBounds(10, 10, 211, 426);
		
		Button btnNewButton = new Button(shlSwt, SWT.NONE);
		btnNewButton.setBounds(64, 456, 72, 22);
		btnNewButton.setText("New Button");
		
		Button btnNewButton_1 = new Button(shlSwt, SWT.NONE);
		btnNewButton_1.setBounds(538, 456, 72, 22);
		btnNewButton_1.setText("New Button");
		
		List dataList = DataFactory.getList();
		
		tableTreeViewer.setContentProvider(new TableViewContentProvider());
		tableTreeViewer.setLabelProvider(new TableViewLabelProvider());
		
		tableTreeViewer.setInput(tableTreeViewInputList);
		
		treeViewer.setContentProvider(new TreeViewerContentProvider());
		treeViewer.setLabelProvider(new TreeViewerLabelProvider());
		treeViewer.setInput(dataList);
		
		
		
		treeViewer.getTree().addSelectionListener(new SelectionAdapter(){
			
			public void widgetSelected(SelectionEvent e) {
				
				
				TreeItem[] selected = treeViewer.getTree().getSelection();
				
				Object obj = selected[0].getData();
				
				tableTreeViewInputList.clear();
				tableTreeViewInputList.add(obj);
				
				tableTreeViewer.refresh();	
			}
		}
		);
	
	}
}

 程序截图

转载于:https://my.oschina.net/myspaceNUAA/blog/28025

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值