2009-07-24 23 views
6

में एक जेडडिटरपेन में माउस स्थिति से एक चरित्र स्थिति में कनवर्ट करने के लिए कैसे मैं वर्तमान में एक समस्या को हल करने की कोशिश कर रहा हूं जहां मुझे जेडडिटरपेन में पाठ के एक टुकड़े में स्थिति खोजने की आवश्यकता है, जहां माउस था क्लिक किया।जावा स्विंग

असल में, जब उपयोगकर्ता किसी शब्द पर राइट-क्लिक करता है तो मुझे यह पता लगाना चाहिए कि शब्द क्या है। ऐसा करने के लिए मुझे यह पता लगाने की ज़रूरत है कि उपयोगकर्ता ने जिस पाठ पर क्लिक किया है उसमें कौन सी स्थिति है। मुझे पता है कि मैं माउसएवेंट से माउस की स्थिति आसानी से प्राप्त कर सकता हूं जो माउस दबाए गए तरीके में पारित हो जाता है, और मुझे बताया गया है कि आप पाठ के टुकड़े में चरित्र सूचकांक प्राप्त करने के लिए इसे परिवर्तित कर सकते हैं - हालांकि मैं यह नहीं समझ सकता कि कैसे करना है इस।

मैंने जेडडिटरपेन पर viewToModel() विधि को आजमाया है, हालांकि यह मुझे पाठ में गलत स्थिति दे रहा है, इसलिए मैं इसे गलत उपयोग कर रहा हूं या यह इस तरह से काम नहीं करता है।

कोई विचार?

public void mouseClicked(MouseEvent e) { 
    JEditorPane editor = (JEditorPane) e.getSource(); 
    Point pt = new Point(e.getX(), e.getY()); 
    int pos = editor.viewToModel(pt); 
    // whatever you need to do here 
} 

उत्तर

9

viewToModel() लागू ऐसा करने के लिए सही तरीका है। यह पता चला है कि ViewMoModel() बिल्कुल वही है जो मुझे यहां उपयोग करना चाहिए, समस्या यह थी कि मैं गलत बिंदु में जा रहा था।

माउसइवेंट से, मैं उस बिंदु को काम करने के लिए getLocationOnScreen() विधि का उपयोग कर रहा था, वास्तव में मुझे getPoint() विधि का उपयोग करना चाहिए था।

इस प्रश्न को पढ़ने वाले किसी भी व्यक्ति के लिए धन्यवाद।

+0

धन्यवाद, मैंने आपका जवाब स्वीकार कर लिया है, जैसा कि आप नीचे दिए गए मेरे उत्तर से देखेंगे, यह लगभग वही है जो मैंने किया है। – Scottm

+0

@ ChssPly76 क्या यह किसी भी तरह से JTable के लिए उपयोग किया जा सकता है? – Igor

+0

विधि दृश्य ToModel() पहले से ही अधिक सामान्य वर्ग JTextComponent द्वारा प्रदान किया गया है। एक जेटीबल के लिए अन्य विधियां हैं जो पहले सेल को वापस कर देगी, और उसके बाद सेल रेंडरर/एडिटर के आधार पर एक उचित विधि कॉल करने की आवश्यकता होगी। –

0

मैं अपने दम पर इस समस्या का समाधान किया है: