2016-12-28 27 views
1

当用户选择CCombo(或CCombo获得焦点)中的项目时,该字段中的文本将被选中。我怎样才能以编程方式删除这个选择并在文本的末尾设置光标位置?CCombo中的文本选择

回答

0

您可以添加一个选择和聚焦听众和修改有光标位置setSelection,例如:

public static void main(String[] args) { 

    Display display = new Display(); 

    Shell shell = new Shell(display); 
    shell.setSize(300, 150); 
    shell.setLayout(new GridLayout()); 

    CCombo combo = new CCombo(shell, 0); 
    combo.setItems(new String[] { "String 1", "Test", "StackOverflow"}); 

    combo.addSelectionListener(selectionAdapter); 
    combo.addFocusListener(focusAdapter); 

    CCombo combo2 = new CCombo(shell, 0); 
    combo2.setItems(new String[] { "String 1", "Test", "StackOverflow"}); 

    combo2.addSelectionListener(selectionAdapter); 
    combo2.addFocusListener(focusAdapter); 

    shell.open(); 
    while (!shell.isDisposed()) { 
     if (!shell.getDisplay().readAndDispatch()) { 
      shell.getDisplay().sleep(); 
     } 
    } 
} 

static void selectionAtEnd(CCombo c) { 
    // get the length of the selected item 
    String text = c.getText(); 
    int endSelection = text.length(); 

    // set the cursor at the end of the text 
    c.setSelection(new Point(endSelection, endSelection)); 
} 

static SelectionAdapter selectionAdapter = new SelectionAdapter() { 
    @Override 
    public void widgetSelected(SelectionEvent arg0) { 
     // change selection when an item is selected 
     selectionAtEnd((CCombo) arg0.getSource()); 
    } 
}; 

static FocusAdapter focusAdapter = new FocusAdapter() { 
    @Override 
    public void focusGained(FocusEvent arg0) { 
     // change selection when focus is gained 
     selectionAtEnd((CCombo) arg0.getSource()); 
    } 
}; 

结果:

CCombo animation