2012-06-13 46 views
6

Gibt es eine Methode, um die Position des Zeichens im JTextField zurückzugeben. Was ich damit meine ist, wenn ich ein JTextField mit einigen Werten habe. Zum Beispiel enthält das Feld den Wert ABCDEFJ. Der Benutzer entscheidet, den Cursor nach dem Zeichen 'C' zu setzen, um einen neuen Wert einzugeben. Gibt es eine Methode, um Position zu erhalten, wo er das neue Zeichen eingibt. In diesem Beispiel das wäre zurückgeben 3.Suchen der Cursor-Textposition in JTextField

+0

Was ist der tatsächliche Anwendungsfall hier? Es sieht so aus, als wäre ein 'JSpinner' (oder vielleicht eine editierbare' JComboBox') eine bessere zu verwendende Komponente. –

+0

Das ist keine gute Frage, weil Sie nach einer bestimmten Codelösung fragen und nicht nach einem Verhalten. Die tatsächliche Lösung für Ihr gewünschtes Verhalten kann einen völlig anderen Ansatz beinhalten. Wenn Sie beispielsweise versuchen, die Eingabe eines JTextFields zu überprüfen, bevor diese abgeschlossen ist, dann möchten Sie vielleicht einen DocumentFilter verwenden. Sagen Sie uns daher in Zukunft mehr über das Gesamtproblem, das Sie lösen möchten, und weniger darüber, wie genau Sie versuchen, es zu lösen. –

Antwort

13

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

+0

Danke. Genau das habe ich gesucht. – tadpole

+0

Gibt es eine direktere Methode - Wie setze ich die Position auf einen Textoffset vom Anfang des Strings? – will

+0

so? 'JTextField.setCaretPosition (anyPreculatedOffset)' – alaster

2

Versuchen Verwendung von CaretListener Schnittstelle bekommen:

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() Methode der CaretEvent Klasse das Ergebnis zurück Sie wünschen, können Sie es auf eine globale Variable zuweisen später zu verwenden, auf.