كيفية التحويل من موقع الماوس إلى موضع حرف في Jeditrpane في جافا سوينغ

StackOverflow https://stackoverflow.com/questions/1180390

سؤال

أحاول حاليا حل مشكلة حيث أحتاج إلى العثور على الموضع في جزء من النص في JEDITRPANE بناء على حيث تم النقر فوق الماوس.

في الأساس، عندما ينقر المستخدم بزر الماوس الأيمن فوق كلمة أحتاج لمعرفة ما هي الكلمة. للقيام بذلك، أحتاج إلى اكتشاف الموضع في النص النقر فوق المستخدم. أعلم أنني أستطيع بسهولة الحصول على موقف الماوس بسهولة من MouseVent والتي يتم تمريرها إلى طريقة الماوس، وقليلت أنه يمكنك تحويل هذا للحصول على فهرس الأحرف في جزء النص - ومع ذلك لا يمكنني معرفة كيفية القيام به هذه.

لقد جربت طريقة Viewtomodel () () على JEDITRPANE ولكن هذا يعطيني في وضع خاطئ في النص، لذلك أنا أيضا أستخدمه خطأ أو لا يعمل بهذه الطريقة.

أيه أفكار؟

هل كانت مفيدة؟

المحلول

استدعاء 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
}

نصائح أخرى

لقد حل هذه المشكلة بمفردي. اتضح أن ViewToModel () هو بالضبط ما يجب أن أستخدمه هنا، وكانت المشكلة هي أنني كنت تمر في النقطة الخطأ إليها.

من MouseVent، كنت أستخدم طريقة GetLocationOronScreen () لحمل النقطة عندما تكون في الواقع، يجب أن أستخدم طريقة GetPoint ().

شكرا لأي شخص قرأ هذا السؤال.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top