可编辑的SWT表

时间:2009-12-16 12:34:47

标签: swt

如何在不使用鼠标侦听器的情况下编辑SWT表值?

5 个答案:

答案 0 :(得分:7)

请点击以下链接中的TableEditor代码段吗?

SWT Snippets

TableEditor部分中的第一个示例在表上使用SelectionListener(与第二个使用您不想要的MouseDown事件的示例不同)

您也可以使用TraverseListenerKeyListener来帮助您实现自己想要的目标。

答案 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,它是非常强大的表,你也可以很容易地使用数据绑定。