2012-06-13 23 views
6

में कर्सर टेक्स्ट स्थिति ढूँढना JTextField में वर्ण की स्थिति को वापस करने का कोई तरीका है। मेरा मतलब यह है कि यदि मेरे पास कुछ मूल्यों के साथ JTextField है। उदाहरण के लिए, फ़ील्ड में एबीसीडीईएफजे है। उपयोगकर्ता एक नया मान दर्ज करने के लिए वर्ण 'सी' के बाद कर्सर को सही करने का निर्णय लेता है। स्थिति प्राप्त करने के लिए कोई तरीका है जहां वह नए चरित्र में प्रवेश करता है। इस उदाहरण, में है कि एक अपने जवाब 3.JTextField

+0

यहां वास्तविक उपयोग-केस क्या है? यह 'जेएसपीनर' (या शायद एक संपादन योग्य 'JComboBox') की तरह दिख रहा है, इसका उपयोग करने के लिए एक बेहतर घटक होगा। –

+0

यह एक अच्छा सवाल नहीं है क्योंकि आप किसी व्यवहार को कार्यान्वित करने के बजाय एक विशिष्ट कोड समाधान मांग रहे हैं। आपके वांछित व्यवहार के वास्तविक समाधान में एक पूरी तरह से अलग दृष्टिकोण शामिल हो सकता है। उदाहरण के लिए, यदि आप पूर्ण होने से पहले JTextField के इनपुट को जांचने का प्रयास कर रहे हैं, तो शायद आप जो वास्तव में उपयोग करना चाहते हैं वह एक दस्तावेज़फिल्टर है। तो भविष्य में, कृपया हमें उस समग्र समस्या के बारे में और बताएं जिसे आप हल करना चाहते हैं, और इस पर कम करें कि आप इसे कैसे हल करने की कोशिश कर रहे हैं। –

उत्तर

13

JTextField.getCaretPosition()

JTextField.setCaretPosition(int pos)

+0

धन्यवाद। यही वह है जिसकी तलाश में मैं हूं। – tadpole

+0

क्या कोई और सीधी विधि है - स्ट्रिंग की शुरुआत से टेक्स्ट ऑफसेट को स्थिति सेट करने की तरह? – will

+0

इस तरह? 'JTextField.setCaretPosition (anyPrecalculatedOffset)' – alaster

1

यहाँ वापसी होगी:

http://docs.oracle.com/javase/6/docs/api/javax/swing/text/JTextComponent.html#getCaretPosition%28%29

एक कार्रवाई के लिए प्रतीक्षा करने के लिए एक ActionListener का प्रयोग करें। जब उपयोगकर्ता कुछ टाइप करता है, तो कैरेट की स्थिति पाएं।

2

CaretListener इंटरफ़ेस का उपयोग हो रही का प्रयास करें: बाद में उपयोग करने के लिए एक वैश्विक चर के लिए

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()CaretEvent की विधि वर्ग परिणाम आप की इच्छा देता है, तो आप इसे प्रदान कर सकते हैं पर।