1.使用Table,并使用TableEditor将其变为可编辑时,TableEditor的grabVertical和grabHorizontal要设置为true,否则Text控件会不显示,在对应的格子里没有光标显示。
table = new Table(composite, SWT.FULL_SELECTION ); table.setBounds(0, 70, 249, 357); table.setHeaderVisible(true); table.setLinesVisible(true); editor = new TableEditor(table); editor.grabHorizontal = true; editor.grabVertical = true; TableColumn tblclmnNewColumn = new TableColumn(table, SWT.NONE); tblclmnNewColumn.setWidth(123); tblclmnNewColumn.setText("Field"); TableColumn tblclmnNewColumn_1 = new TableColumn(table, SWT.NONE); tblclmnNewColumn_1.setWidth(122); tblclmnNewColumn_1.setText("Value"); table.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { // Clean up any previous editor control Control oldEditor = editor.getEditor(); if (oldEditor != null) oldEditor.dispose(); // Identify the selected row final TableItem item = (TableItem) e.item; if (item == null){ return; } // The control that will be the editor must be a child of the Table final Text newEditor = new Text(table, SWT.NONE); newEditor.setText(item.getText(1)); newEditor.selectAll(); newEditor.setFocus(); newEditor.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent me) { Text text = (Text) editor.getEditor(); item.setText(1, text.getText()); } }); editor.setEditor(newEditor, item, 1); } });