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);
}
});