سؤال

وأنا أحاول أن إنشاء المستمع مفتاح في جافا ولكن عندما أحاول

KeyListener listener = new KeyListener();

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

شكرا،

وتوميك

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

المحلول

وKeyListener هو واجهة - لا بد من تنفيذها من قبل شيئا. لذلك يمكن أن تفعل:

KeyListener listener = new SomeKeyListenerImplementation();

ولكن لا يمكنك مثيل مباشرة. أنت <م> يمكن استخدام الطبقة الداخلية مجهول:

KeyListener listener = new KeyListener()
{
    public void keyPressed(KeyEvent e) { /* ... */ }

    public void keyReleased(KeyEvent e) { /* ... */ }

    public void keyTyped(KeyEvent e) { /* ... */ }
};

وذلك يعتمد على ما تريد القيام به، من حيث الأساس.

نصائح أخرى

وKeyListener هو واجهة، لذلك يجب كتابة فئة التي تطبق لاستخدامها. كما اقترح جون، يمكنك إنشاء فئة مجهولة المصدر التي تطبق مباشرة في الصفحة، ولكن هناك فئة تسمى KeyAdapter التي هي فئة مجردة تنفيذ KeyListener، مع أساليب فارغة لكل أسلوب واجهة. إذا كنت فرعية KeyAdapter، فأنت بحاجة فقط لتجاوز تلك الأساليب التي تهتم بها، وليس كل طريقة. وهكذا، إذا كنت تهتم فقط عن keyPressed، هل يمكن أن تفعل هذا

KeyListener listener = new KeyAdapter()
{
    public void keyPressed(KeyEvent e) { /* ... */ }
};

وهذا يمكن أن يوفر لك قليلا من العمل.

وKeyListener هو واجهة، وهذا يعني يمكنك كتابة فئة تستند إليه وتنفيذ مهامها. ولعل هذا تعليمي يساعد.

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