2012-06-13 24 views
6

JTextField öğesindeki karakterin konumunu döndürmek için bir yöntem var mı. Demek istediğim, içinde bazı değerler bulunan bir JTextField varsa. Örneğin, alan ABCDEFJ değerini içerir. Kullanıcı, imleci karakteri 'C' sonra yeni bir değer girmek için hemen koymaya karar verir. Yeni karaktere girdiği pozisyonunu almak için bir yöntem var mı. Bu örnekte, yılında bir 3.JTextField öğesinde imleç metni konumunu bulma

+0

Burada gerçek kullanım durumu nedir? 'JSpinner' (veya belki de düzenlenebilir bir JComboBox') kullanmak daha iyi bir bileşen olacak gibi görünüyor. –

+0

Bu iyi bir soru değil çünkü bir davranışın nasıl uygulanacağından ziyade belirli bir kod çözümü istiyorsunuz. İstediğiniz davranışa gerçek çözüm tamamen farklı bir yaklaşım içerebilir. Örneğin, bir JTextField girişini tamamlanmadan önce kontrol etmeye çalışıyorsanız, belki de gerçekten kullanmak istediğiniz şey bir DocumentFilter'dir. Gelecekte, lütfen çözmek istediğiniz genel sorun hakkında daha fazla bilgi verin ve bunu çözmek için ne kadar çaba sarfettiğinizi öğrenin. –

cevap

13

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

+0

Teşekkür ederim. Tam olarak aradığım şey bu. – tadpole

+0

Daha doğrudan bir yöntem var mı - konumu dizenin başlangıcından bir metin ofsetine ayarlamak gibi mi? – will

+0

bunu beğendi mi? 'JTextField.setCaretPosition (anyPrecalculatedOffset)' – alaster

2

CaretListener arayüzünün kullanımını alma deneyin: Daha sonra kullanmak üzere bir genel değişkeni sınıf arzu sonuç döndürür

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() yöntem CaretEvent, sen atayabilirsiniz üzerinde.