2012-06-13 18 views
6

Czy istnieje metoda zwracania położenia znaku w polu JTextField. Mam na myśli to, że jeśli mam JTextField z pewnymi wartościami w nim. Na przykład pole zawiera wartość ABCDEFJ. Użytkownik decyduje się umieścić kursor zaraz po znaku "C", aby wprowadzić nową wartość. Czy istnieje metoda uzyskania pozycji , w której wchodzi do nowej postaci. W tym przykładzie, że zwróci 3.Wyszukiwanie pozycji tekstu kursora w JTextField

+0

Jaki jest faktyczny przypadek użycia? Wygląda na to, że 'JSpinner' (lub może edytowalny' JComboBox') byłby lepszym komponentem do użycia. –

+0

To nie jest dobre pytanie, ponieważ pytasz o konkretne rozwiązanie kodu, a nie o sposób implementacji zachowania. Rzeczywiste rozwiązanie pożądanego zachowania może wiązać się z zupełnie innym podejściem. Na przykład, jeśli próbujesz sprawdzić dane wejściowe JTextField przed ich ukończeniem, być może naprawdę chcesz użyć programu DocumentFilter. Tak więc w przyszłości, powiedz nam więcej o ogólnym problemie, który chcesz rozwiązać, a mniej o tym, jak konkretnie próbujesz go rozwiązać. –

Odpowiedz

13

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

+0

Dziękuję. Właśnie tego szukałem. – tadpole

+0

Czy istnieje bardziej bezpośrednia metoda - jak ustawienie pozycji przesunięcia tekstu od początku łańcucha? – will

+0

w ten sposób? 'JTextField.setCaretPosition (anyPrecalculatedOffset)' – alaster

2

Spróbuj znaleźć zastosowanie CaretListener interfejsu:

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() metoda CaretEvent klasa zwraca wynik pragnienie, można go przypisać do zmiennej globalnej użyć później na.

Powiązane problemy