2016-12-28 17 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

関連する問題