《Eclipse插件开发》之表格查看器

本文为《eclipse插件开发学习笔记》的笔记,用于本人复习使用。

Table控件

setHeaderVisible()方法设置是否显示表头,setLinesVisible()方法设置是否显示网格。
为table设置数据的两种方法

  1. 使用string数组
 item1.setText(new String[]{"Content 11","Content12"});
  1. 按列赋值
  //给第一列赋值
 item2.setText("Content21");
 //给第二列赋值
 item2.setText(0,"Content22");

除设置文字额图片外,也可以设置前景色,背景色,字体等。
删除remove方法

  1. remove(int index)删除第几行
  2. remove(int from,int to)删除从from行到to行
  3. remove(int[] indices)删除在indices数组中指定的所有行
  4. removeAll()删除所有

创建table时使用了CHECK样式,会在table的第一列的每一行显示一个复选框。使用TableItem.getChecked方法得知某一行的复选框是否被勾选,setChecked方法可以修改此状态。使用setGrayed方法可以使对应复选框显示成灰色。

  • getItem(int index) 返回在Table中序号为index的行
  • getItem(Point point)返回所占的像素区域包含参数点的行。

当Table被选中时,会触发一个Selection事件,可以用getSelectionIndices方法取得被选中 TableItem的索引,然后用getItem方法得到对应的Item并加以处理。

当选择行时,SWT.FULL_SELECTION样式表示整行都会高亮。
SWT.SIMPLE/SWT.MUlTI样式代表选择单行或多行。SWT.HIDE_SELECTION样式表示表格失去焦点时不显示选择的行,否则该行是灰色。
TableColumn被用来设置表头
setText()方法 设置文本
setImage()方法 设置图片
setWidth()方法 设置宽度。

TableViewer

由于列表和表格所需的数据结构都是对象数组,程序中仍然使用前文用到的ListModel类作为模型。内容提供者,除了将viewer属性的类型从ListViewer换成了TableViewer外,与前文List的内容提供者也大致相同。同样继承IStructuredContentProvider。

  • 标签提供者
@Override
	public String getColumnText(Object element, int columnIndex) {
		// TODO Auto-generated method stub
		if(element instanceof User){
			User user= (User)element;
			if(columnIndex == 0){
				return user.getId();
			}else if(columnIndex == 1){
				return user.getName();
			}
		}
		return null;
	}
  • viewer
 public static void main(String[] args) {
		// TODO Auto-generated method stub
		Display display = Display.getDefault();
		final Shell shell = new Shell(display);
		shell.setText("Hello JFace");
		shell.setSize(560,383);
		shell.setLayout(new FillLayout());
		shell.open();
	    
		TableViewer tableviewer = new TableViewer(shell,SWT.BORDER|SWT.CHECK|SWT.FULL_SELECTION|SWT.MULTI);
		tableviewer.setContentProvider(new ListContentProvider());
		tableviewer.setLabelProvider(new TableLabelProvider());
		
		Table table = tableviewer.getTable();
		TableColumn column1 = new TableColumn(table,SWT.NONE);
		TableColumn column2 = new TableColumn(table,SWT.NONE);
		column1.setText("id");

		column1.setWidth(120);
		column2.setText("name");
		column2.setWidth(100);

		table.setHeaderVisible(true);
		table.setLinesVisible(true);
		
	    ListModel listmodel = new ListModel();
	    tableviewer.setInput(listmodel);
	    
		listmodel.add(new User("1","Tom"));
		listmodel.add(new User("2","JACK"));
		listmodel.add(new User("3","Nancy"));
		

		while (!shell.isDisposed()){
			if(!display.readAndDispatch())
				display.sleep();
		}
	}
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值