2012-03-31 5 views
5

Ich habe eine JTextField mit etwas Text. Wenn ich auf Textfeld klicke, bewegt sich der Cursor zum Ende des Feldes. Ich möchte, dass der Cursor zum Anfang des Feldes bewegt wird, wenn er fokussiert wird.Bewegen Sie den Cursor von JTextField oder JComboBox zum Start

Ich habe das gleiche Problem mit einem editierbaren JComboBox.

Wie kann ich diese Cursorpositionierung im Fokus erreichen?

+1

Ich meine, ich habe JComboBox mit beliebigem Text in Inhalt bearbeitet, und wenn ich auf JComboBox klicke, möchte ich Marker an den Anfang der bearbeitbaren JComboBox verschieben. Standardmäßig geht es zum Ende des Textfelds. Wenn ich Feldanfang sagte, meine ich nicht den ersten Punkt der Dropdown-Liste. – Karen

+0

Danke für die Klärung. Meine Verwirrung wurde während der Bearbeitung dieses Kommentars etwas verändert. :) –

Antwort

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

ich denke, das sein kann, was Sie suchen:

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

Sie diesen Befehl

comp.setCaretPosition (Index) verwenden können;

dort Index ist Caret-Position.