2012-03-31 15 views
5

Mam z tekstem. Kiedy klikam pole tekstowe, kursor przesuwa się na koniec pola. Chcę, aby kursor przesuwał się do początku pola, gdy się skupi.Przenieś kursor JTextField lub JComboBox na początek

Mam ten sam problem z edytowalnym JComboBox.

W jaki sposób mogę uzyskać to pozycjonowanie kursora przy ustawieniu ostrości?

+1

Mam na myśli, że mam edytowalny JComboBox z dowolnym tekstem w treści, a kiedy klikam JComboBox, chcę przenieść znacznik na początek edytowalnego JComboBox. Domyślnie przechodzi na koniec pola tekstowego. Kiedy mówiłem o początku pola, nie mam na myśli pierwszego elementu listy rozwijanej. – Karen

+0

Dzięki za wyjaśnienie. Moje zamieszanie nieco się wyjaśniło podczas edycji tego komentarza. :) –

Odpowiedz

5
/** 
* On gaining focus place the cursor at the start of the text. 
*/ 
public class CursorAtStartFocusListener extends FocusAdapter { 

    @Override 
    public void focusGained(java.awt.event.FocusEvent evt) { 
     Object source = evt.getSource(); 
     if (source instanceof JTextComponent) { 
      JTextComponent comp = (JTextComponent) source; 
      comp.setCaretPosition(0); 
     } else { 
      Logger.getLogger(getClass().getName()).log(Level.INFO, 
        "A text component expected instead of {0}", 
        source.getClass().getName()); 
     } 
    } 
} 

jTextField1.addFocusListener(new CursorAtStartFocusListener()); 
jComboBox1.getEditor().getEditorComponent().addFocusListener(new CursorAtStartFocusListener()); 
// Only one instance of CursorAtStartFocusListener needed. 
0

myślę, że może to być to, czego szukasz:

JTextField t = new JTextField(); 
t.setHorizontalAlignment(JTextField.LEFT); 
2

Można użyć tego polecenia

comp.setCaretPosition (indeks);

tam indeks jest pozycją caret.