سؤال

أنا أعمل على مشروع Java وتحتاج إلى محاكاة الجوبريس نقرة على JTextfield. ما أبحث عنه هو ما يعادل طريقة jbutton doclick ().

أحاول أن أحصل على KeyPress "ENTER" تنفيذ نفس الوظيفة بالضبط كنقرة على jtextfield.

لست متأكدا من المعلومات الأخرى لتوفيرها. شكرا لك مقدما.

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

المحلول 2

حسنا شكرا على المساعدة. أعتقد أنني لم أكن واضحا، لكنني اكتشفت الآن طريقة لجعل التعليمات البرمجية الخاصة بي بفضل بعض أفكارك.

كنت قد فكرت بالفعل في إنشاء طريقة خاصة تم استدعاؤها بواسطة كلتا الوظائف، لكن جزءا من التعليمات البرمجية يحتاج إلى معرفة أي jtextfield يتم النقر فوق المستخدم. لقد اكتشفت .getFocusOwner ()، والذي يسمح لي بالرجوع إلى العنصر الحالي مع التركيز (JTextfield). شيء من هذا القبيل

    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_ENTER) {
            Object which = JFrame.getFocusOwner();                
            if(which.getClass() == JTextField.class)
                foo(which);
         }
    }

    public void mouseClicked(MouseEvent e) {                
        Object which = e.getSource();
        if(which.getClass()== JTextField.class) {
            foo(which);
        }
    }

ربما كانت هناك طريقة أفضل للقيام بذلك، ولكن في الأساس، كان لدي مجموعة من jtextfields وكان البرنامج يعمل بشكل صحيح عندما ينقر المستخدمون على jtextfield التالي، ولكن عند الضغط على Enter، لم أكن أعرف كيفية استدعاء JTextfield الذي تم إدخاله للتو لذلك أردت محاكاة النقر على jtextfield (الذي يستدعي التركيز). أعتقد أنني يجب أن أشرح فقط مشكلتي كلها.

شكرًا لك.

نصائح أخرى

public void simulateKey(KeyEvent e, Component c) {
   Field f = KeyEvent.class.getField("focusManagerIsDispatching");
   f.setAccessible(true);
   f.set(e, Boolean.TRUE);
   c.dispatchEvent(e);
}

إرسال "أدخل" إلى jtextfield الخاص بك. هذا سرق من هنا.

إذا كنت ترغب في أن يحدث نفس الشيء بسبب الماوس وضغط المفتاح، فلن يكون من المنطقي أن يكون لديك طريقة تسمى كلاهما؟ وهذا هو، لديك طريقة مثل fieldClicked التي يطلق عليها كل من MouseListener وذلك KeyListener. وبعد سيكون من الأسهل تصحيح الأخطاء - أقل تهياك مع الأحداث، والتي يمكن أن تكون مربكة للغاية - وربما أكثر قابلية للقراءة.

ما أريده هو عندما يضغط المستخدم أدخل، فهو يستدعي نفس التعليمات البرمجية عند النقر فوق أي مكان في الإطار

لا يزال لا معنى لي.

عندما ينقر المستخدم على أي مكان في الإطار، تحدث بضعة أشياء:

أ) حقل النص يفقد التركيز

ب) تركيز بعض مكاسب المكونات الأخرى

يمكنك إضافة ActionListener إلى حقل النص. يتم استدعاء ActionListener عند الضغط على المفتاح ENTER. ولكن بعد ذلك، يمكنك تخمين أين في الإطار لتوليد النقر فوق الماوس؟ يبدو أن المنطق العشوائي بالنسبة لي.

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