2012-06-13 19 views
6

Esiste un metodo per restituire la posizione del carattere in JTextField. Quello che voglio dire è che ho un JTextField con alcuni valori al suo interno. Ad esempio, il campo contiene il valore ABCDEFJ. L'utente decide di posizionare il cursore subito dopo il carattere "C" per immettere un nuovo valore. Esiste un metodo per ottenere la posizione dove inserisce il nuovo carattere. In questo esempio, che sarebbe restituire un 3.Trovare la posizione del testo del cursore in JTextField

+0

Qual è l'attuale caso d'uso qui? Sembrerebbe un 'JSpinner' (o forse un' JComboBox 'modificabile) sarebbe un componente migliore da usare. –

+0

Questa non è una buona domanda perché stai chiedendo una soluzione di codice specifica piuttosto che come implementare un comportamento. La soluzione reale al comportamento desiderato può comportare un approccio completamente diverso. Ad esempio, se stai cercando di verificare l'input di un JTextField prima che sia completo, allora forse quello che vuoi veramente usare è DocumentFilter. Quindi, in futuro, ti preghiamo di dirci di più sul problema generale che vuoi risolvere, e meno sul modo specifico in cui stai cercando di risolverlo. –

risposta

13

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

+0

Grazie. Questo e 'esattamente quello che stavo cercando. – tadpole

+0

Esiste un metodo più diretto? Come impostare la posizione su un offset di testo dall'inizio della stringa? – will

+0

piace questo? 'JTextField.setCaretPosition (anyPrecalculatedOffset)' – alaster

2

Prova ad ottenere l'uso di CaretListener interfaccia:

public class A extends JFrame implements CaretListener 
{ 
    //Assume you have a text field. 
    public A() 
    { 
    JTextField field = new JTextField("bla bla"); 
    field.addCaretListener(this); 
    ..... 
    } 

    public void caretUpdate(CaretEvent e) 
    {   
    int index = e.getDot(); 
    ..... 
    } 
} 

getDot() metodo CaretEvent classe restituisce il risultato desiderato, è possibile assegnare ad una variabile globale da utilizzare in seguito sopra.