- 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
运行项目成果如下图。