2012-03-31 3 views
5

Ho un JTextField con un po 'di testo. Quando faccio clic sul campo di testo, il cursore si sposta alla fine del campo. Voglio che il cursore si sposti all'inizio del campo quando diventa focalizzato.Sposta il cursore di JTextField o JComboBox all'inizio

Ho lo stesso problema con un JComboBox modificabile.

Come posso raggiungere questo posizionamento del cursore sulla messa a fuoco?

+1

Voglio dire, ho JComboBox modificabile con qualsiasi testo nel contenuto, e quando clicco su JComboBox, desidero spostare l'indicatore all'inizio del JComboBox modificabile. Di default va alla fine del campo di testo. Quando ho detto inizio campo, non intendo il primo elemento dell'elenco a discesa. – Karen

+0

Grazie per aver chiarito. La mia confusione è stata in qualche modo ordinata durante il montaggio di quel commento. :) –

risposta

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

Penso che questo possa essere quello che stai cercando:

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

È possibile utilizzare questo comando

comp.setCaretPosition (indice);

l'indice è la posizione di inserimento.