2017-02-15 44 views
0

我用从TreeCursor文档相同的例子试图从小区选择的文本: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/plain/examples/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet360.javaEclipse的SWT TreeCursor总是有被选为第一次

在哪个小区我按回车键(SWT.CR)首次,说我在单元格'root11'上按下,在此之后,单击'root11'出现在单元格中。 我的要求是从一个单元格中选择要复制的文本。我不想编辑。所以每当我点击一个单元格来复制其文本时,就会出现第一次选择的单元格中的文本。

任何可能导致此问题的指针? 在此先感谢!

回答

0

当在项目上按下ENTER时,会调用widgetDefaultSelected方法。在那里,ControlEditor以所选TreeItem文本作为其编辑器设置Texteditor.setEditor(text);

Text然后才处理当ENTERESC被按下,并在没有其他场合。这意味着即使您选择其他项目,Text仍然可以显示其原始内容。

要更改此行为,您可以修改widgetSelected方法,以便例如处置Text,以便它不再可见或使用当前选定的项目更新其文本。

要删除Text

@Override 
public void widgetSelected(SelectionEvent e) { 

    // get the current editor 
    Text text = (Text) editor.getEditor(); 

    if (text != null && !text.isDisposed()) { 
     // remove the editor 
     text.dispose(); 
    } 

    tree.setSelection(new TreeItem[] { cursor.getRow() }); 
} 

要更新Text内容:

@Override 
public void widgetSelected(SelectionEvent e) { 

    // get the current editor 
    Text text = (Text) editor.getEditor(); 

    if (text != null && !text.isDisposed()) { 
     // update the text in the editor 
     TreeItem row = cursor.getRow(); 
     int column = cursor.getColumn(); 
     text.setText(row.getText(column)); 
    } 

    tree.setSelection(new TreeItem[] { cursor.getRow() }); 
} 
+0

由于一吨快速回复!有用 :) – Vrinda