- 1
新建一個swt-java項目,項目標名子為javatable。
- 2
成立一個shell窗口,窗口的名字為javatable。
- 3
在窗口中增添一個TableViewer。TableViewerColumn。
- 4
在table的數據成立一個實體類。
public class jilu{
private String mingcheng="";
public String getmingcheng(){
return this.mingcheng;
}
public void setmingcheng(String mingcheng){
this.mingcheng=mingcheng;
}
}
- 5
新建一個標簽類,把數據顯示在table中。
public class mcbiaoqian implements ITableLabelProvider {
@Override
public void addListener(ILabelProviderListener listener) {
}
@Override
public void dispose() {
}
@Override
public boolean isLabelProperty(Object element, String property) {
return false;
}
@Override
public void removeListener(ILabelProviderListener listener) {
}
@Override
public Image getColumnImage(Object element, int columnIndex) {
return null;
}
@Override
public String getColumnText(Object element, int columnIndex) {
if (element instanceof jilu){
jilu xx = (jilu)element;
switch(columnIndex){
case 0:
return xx.getmingcheng();
}
}
return null;
}
}
- 6
新建一個數據的容器類,讀取一行數據。
public class mcrongqi implements IStructuredContentProvider {
public Object[] getElements(Object inputElement) {
if(inputElement instanceof List){
return ((List<?>)inputElement).toArray();
}else{
return new Object[0];
}
}
public void dispose() {
}
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
}
- 7
新建一個編纂類,許可在table中編纂數據。
public class bjmingcheng implements ICellModifier{
@Override
public boolean canModify(Object element, String property) {
return true;
}
@Override
public Object getValue(Object element, String property) {
jilu wp=(jilu) element;
switch(property){
case "mingcheng":
return wp.getmingcheng();
}
return null;
}
@Override
public void modify(Object element, String property, Object value) {
if(element==null){
return;
}
TableItem ti=(TableItem)element;
jilu wp=(jilu)ti.getData();
switch(property){
case "mingcheng":
wp.setmingcheng((String)value);
break;
}
tv.update(wp, null);
}
}
- 8
新建一個窗口編纂的類,可以彈出窗口,在編纂的內容返回到table中顯示,我沒有新建一個窗口,我返回的是字符串。
public class mcDialogCellEditor extends DialogCellEditor {
public mcDialogCellEditor(Composite parent, int style){
super(parent,style);
}
@Override
protected Object openDialogBox(Control cellEditorWindow) {
return "插件 項目";
}
}
- 9
把界說的類初始化:
tv.setLabelProvider(new mcbiaoqian());
tv.setContentProvider(new mcrongqi());
List<jilu> li=new ArrayList<jilu>();
li.add(new jilu());
li.add(new jilu());
tv.setInput(li);
String[] lm={"mingcheng"};
tv.setColumnProperties(lm);
tv.setCellModifier(new bjmingcheng());
CellEditor[] cell = new CellEditor[1];
cell[0]=new mcDialogCellEditor(table,SWT.BORDER);
tv.setCellEditors(cell);
- 10
運行項目成果如下圖。