Astăzi lucram cu un widget Text (org.eclipse.swt.widgets.Text) și am avut nevoie să setez manual poziția caret-ului după un apel al metodei setText().
Am descoperit în Javadoc metoda getCaretPosition(), care returnează un int, însă API-ul nu oferă și o metodă setCaretPosition().
Căutând pe Internet soluții la problema mea, am găsit post-uri despre cum se poate muta caret-ul la sfârșitul textului, folosind metoda setSelection(int start):
textWidget.setSelection(textWidget.getText().length());
unde textWidget este o instanță a clasei Text.
Pentru mai multe detalii, vezi post-ul de pe StackOverflow.
De asemenea, API-ul ofera o variantă overloaded a metodei setSelection(int start), sub forma setSelection(int start, int end), indecșii start și end corespunzând poziției caret-ului.
Astfel, am scris următoarea soluție:
int caretPosition = textWidget.getCaretPosition();
textWidget.setText( newValue );
textWidget.setSelection( caretPosition, caretPosition );
Prin acest truc am setat poziția caret-ului la valoarea anterioară apelului metodei setText(), stabilind o selecție vidă.
Încă nu mi-e clar dacă simplul fapt că am fost nevoit să resetez manual poziția caret-ului indică un design defectuos sau nu, dar sper să revin cu un răspuns.
Showing posts with label widget. Show all posts
Showing posts with label widget. Show all posts
Subscribe to:
Posts (Atom)