本文为《eclipse插件开发学习笔记》的笔记,用于本人复习使用。
Table控件
setHeaderVisible()方法设置是否显示表头,setLinesVisible()方法设置是否显示网格。
为table设置数据的两种方法
- 使用string数组
item1.setText(new String[]{"Content 11","Content12"});
- 按列赋值
//给第一列赋值
item2.setText("Content21");
//给第二列赋值
item2.setText(0,"Content22");
除设置文字额图片外,也可以设置前景色,背景色,字体等。
删除remove方法
- remove(int index)删除第几行
- remove(int from,int to)删除从from行到to行
- remove(int[] indices)删除在indices数组中指定的所有行
- 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();
}
}