TableEditor 编辑指定列

来源:互联网 发布:天国王朝 角色 知乎 编辑:程序博客网 时间:2024/06/06 00:42
import org.eclipse.swt.custom.*;import org.eclipse.swt.events.ModifyEvent;import org.eclipse.swt.events.ModifyListener;import org.eclipse.swt.widgets.*;import org.eclipse.swt.SWT;import org.eclipse.swt.layout.*;public class tableTest {private Shell sShell = null;private ViewForm viewForm = null;private ToolBar toolBar = null;private Composite composite = null;private Table table = null;private Menu menu = null;//创建ViewForm面板,放置工具栏和表格private void createViewForm(){viewForm = new ViewForm(sShell,SWT.NONE);viewForm.setTopCenterSeparate(true);createToolBar();viewForm.setTopLeft(toolBar);createComposite();viewForm.setContent(composite);}private void createToolBar() {// TODO Auto-generated method stubtoolBar = new ToolBar(viewForm,SWT.FLAT);final ToolItem add = new ToolItem(toolBar,SWT.PUSH);add.setText("添加");final ToolItem del = new ToolItem(toolBar,SWT.PUSH);del.setText("删除");final ToolItem backUp = new ToolItem(toolBar,SWT.PUSH);backUp.setText("UP");final ToolItem forward = new ToolItem(toolBar,SWT.PUSH);forward.setText("下移");final ToolItem save = new ToolItem(toolBar,SWT.PUSH);save.setText("保存");}private void createComposite() {// TODO Auto-generated method stubGridLayout gridLayout = new GridLayout();gridLayout.numColumns = 1;//gridLayout.marginWidth=100;//gridLayout.marginHeight =60;composite = new Composite(viewForm, SWT.NONE);composite.setLayout(gridLayout);createTable();}//创建表格private void createTable() {// 表格布局GridData gridDate = new GridData();gridDate.horizontalAlignment = SWT.FILL;gridDate.grabExcessHorizontalSpace = true ;gridDate.grabExcessVerticalSpace = true;gridDate.verticalAlignment = SWT.FILL;//创建表格table = new Table(composite,SWT.FULL_SELECTION);table.setHeaderVisible(true);//show the table titletable.setLayoutData(gridDate);//设置表格布局table.setLinesVisible(true);//设置显示表格线//创建表头字符串数组String[] tableHeader = {"配置项","参  数","配置人","时  间"};for(int i=0;i<tableHeader.length;i++){TableColumn tableColumn = new TableColumn(table, SWT.CENTER);tableColumn.setText(tableHeader[i]);tableColumn.setMoveable(true);}//增加三行数据TableItem item = new TableItem(table, SWT.NONE);item.setText(new  String[]{"IP","0.0.0.0","Host","MM-YY-RR:AA-BB-CC"});item = new TableItem(table, SWT.None);item.setText(new String[]{"端口","80","Host","MM-YY-RR:AA-BB-CC"});item = new TableItem(table, SWT.None);item.setText(new String[]{"数据库","Mysql","Host","MM-YY-RR:AA-BB-CC"});item = new TableItem(table, SWT.None);item.setText(new String[]{"服务器","SSETDDQ","Host","MM-YY-RR:AA-BB-CC"});TableItem[] items = table.getItems();for(int i=0;i<items.length;i++){final TableEditor editor = new TableEditor(table);final Text text = new Text(table,SWT.None);text.setText(items[i].getText(0));editor.grabHorizontal = true;//关键方法editor.setEditor(text, items[i], 0);text.addModifyListener(new ModifyListener(){@Overridepublic void modifyText(ModifyEvent e) {// TODO Auto-generated method stubeditor.getItem().setText(2,text.getText());}});}//重新布局表格for(int i=0;i<tableHeader.length;i++){table.getColumn(i).pack();}}//创建主窗口private void createSShell(){sShell = new Shell();sShell.setText("Detail Config Dialog Operation");sShell.setLayout(new FillLayout());int x = 600;int y = 300;sShell.setLocation(x, y);createViewForm();createMenu();sShell.pack();}//添加一个   弹出式  上下文菜单private void createMenu() {// TODO Auto-generated method stubmenu = new Menu(sShell,SWT.POP_UP);//table.setMenu(menu);MenuItem del = new MenuItem(menu, SWT.PUSH);String delStr = "删除";del.setText(delStr);del.addListener(SWT.Selection, new Listener(){public void handleEvent(Event e){table.remove(table.getSelectionIndices());}});//MenuItem view = new MenuItem(menu,SWT.PUSH);String viewStr = "查看";view.setText(viewStr);view.addListener(SWT.Selection, new Listener(){public void handleEvent(Event e1){TableItem[] items = table.getSelection();for(int i=0 ;i<items.length;i++)System.out.print(items[i].getText());}});}//主函数public static void main(String args[]){Display display = Display.getDefault();tableTest  thisclass = new tableTest();thisclass.createSShell();thisclass.sShell.open();while(!thisclass.sShell.isDisposed()){if(!display.readAndDispatch())display.sleep();}display.dispose();}}完整代码


 

 

 

 

TableItem[] items = table.getItems();           for(int i=0;i<items.length;i++)           {              final TableEditor editor = new TableEditor(table);              final Text text = new Text(table,SWT.None);              text.setText(items[i].getText(0));              editor.grabHorizontal = true;              editor.setEditor(text, items[i], 0);              text.addModifyListener(new ModifyListener(){                   @Override                  publicvoid modifyText(ModifyEvent e)                   {                     editor.getItem().setText(2,text.getText());                  }                                });

当你更改items[i].getText( 0 ));和 editor.setEditor(text, items[i], 0);这个两个语句的“0”这个参数时,会改变可编辑的列。比如两处的  0  都改成 1,你就可以更改第二列了。

 

 

 

 

                 

      

原创粉丝点击