如何在不使用鼠标侦听器的情况下编辑SWT表值?
答案 0 :(得分:7)
请点击以下链接中的TableEditor
代码段吗?
TableEditor
部分中的第一个示例在表上使用SelectionListener
(与第二个使用您不想要的MouseDown事件的示例不同)
您也可以使用TraverseListener
或KeyListener
来帮助您实现自己想要的目标。
答案 1 :(得分:4)
final int EDITABLECOLUMN = 1;
tblProvisionInfo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
// Clean up any previous editor control
final TableEditor editor = new TableEditor(tblProvisionInfo);
// The editor must have the same size as the cell and must
// not be any smaller than 50 pixels.
editor.horizontalAlignment = SWT.LEFT;
editor.grabHorizontal = true;
editor.minimumWidth = 50;
Control oldEditor = editor.getEditor();
if (oldEditor != null)
oldEditor.dispose();
// Identify the selected row
TableItem item = (TableItem) e.item;
if (item == null)
return;
// The control that will be the editor must be a child of the
// Table
Text newEditor = new Text(tblProvisionInfo, SWT.NONE);
newEditor.setText(item.getText(EDITABLECOLUMN));
newEditor.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent me) {
Text text = (Text) editor.getEditor();
editor.getItem()
.setText(EDITABLECOLUMN, text.getText());
}
});
newEditor.selectAll();
newEditor.setFocus();
editor.setEditor(newEditor, item, EDITABLECOLUMN);
}
});
此处tblProvision
是您表格的名称。您现在可以通过单击来编辑您的表格。我已声明EDITABLECOLUMN
。这是您要编辑的column
。
答案 2 :(得分:1)
如果您也可以使用JFace而不是只是痛苦SWT,请查看JFace Snippets,尤其是
答案 3 :(得分:0)
您可以获取或设置项目的值,例如:
Table table = new Table(parent, SWT.NONE);
TableItem item = new TableItem(table, SWT.NONE);
item.setText("My new Text");
答案 4 :(得分:0)
我建议你给我们TableViewer,它是非常强大的表,你也可以很容易地使用数据绑定。