Cum de a rezolva "Apăsările de la tastatură nu sunt abstracte și nu suprascrie metoda ab"

Sunt o programare de învățare Java și încerc să compilez codul de mai jos dintr-o carte. Când încerc să compilez codul primesc această eroare

Keystrokes is not abstract and does not override abstract method 
    keyTyped (java.awt.event.KeyEvent) in java.awt.event.KeyListener.

De asemenea, cred că acest lucru nu are nicio legătură, dar și cartea mi-a spus să adaug această secțiune de cod la codul sursă (undeva?):

pnl.add ( field) ;
pnl.add (txtArea);

Când fac, obțin un Identificator "Eroare așteptată".

Codul programului:

import javax.swing.*;
import java.awt.event.*;

  class Keystrokes extends JFrame implements KeyListener
  {
   JPanel pnl = new JPanel(); 

  public static void main (String[ ] args){
      Keystrokes gui = new Keystrokes();
    }

    JTextField field = new JTextField ( 38 );
    JTextArea txtArea = new JTextArea (5, 38);

 public Keystrokes()
    {
     super( "Swing window");
     setSize( 500,200);
     setDefaultCloseOperation( EXIT_ON_CLOSE );
     add(pnl);
     field.addKeyListener (this );

     setVisible( true );
    }

    public void keyPressed(KeyEvent event )
    {
        txtArea.setText("Key Pressed");
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public void KeyTyped (KeyEvent event ) {
        throw new UnsupportedOperationException("Not supported yet.");
        txtArea.append("\nCharacter : " + event.getKeyChar() );
    }

    public void keyReleased ( KeyEvent event) 
    {
        int keyCode = event.getKeyCode();
       txtArea.append("\nKey Code : " + event.getKeyCode() );
       textArea.append("\nKey Text : " + event.getKeyText(keyCode));
    }
}
0
Nu includeți mai mult de o linie goală de spațiu alb la un moment dat. Și de dragul persoanelor care le citesc, precum și de depanare, folosiți o indentare consecventă și logică pentru blocurile de coduri.
adăugat autor Andrew Thompson, sursa

3 răspunsuri

Metoda dvs. KeyTyped trebuie să fie keyTyped . Capitalizarea contează.

0
adăugat
Mulțumesc, am copiat scrisoarea pentru scrisoarea din carte
adăugat autor Edmund Doyle, sursa
Nu aș fi niciodată un călugăr bun ...
adăugat autor Edmund Doyle, sursa
orice intrare pe a doua mea problemă?
adăugat autor Edmund Doyle, sursa
Cartea nu a spus așa că am presupus că a mers sub "JTextArea txtArea = nou JTextArea (5, 38);" dar am încercat să o pun peste tot în cod.
adăugat autor Edmund Doyle, sursa
@ EdmundDoyle aș sugera să o pun imediat înaintea add (pnl) .
adăugat autor Jeffrey, sursa
Mă îndoiesc. Autorul acelei cărți ar fi să vă smulgă în cap chiar acum dacă ar fi fost aici.
adăugat autor duffymo, sursa
@ Edmund: atunci fie cartea sau abilitățile de transcriere sunt în eroare.
adăugat autor Hovercraft Full Of Eels, sursa
@ Edmund: Unde încercați să puneți codul respectiv? Înțelegeți că trebuie să mergeți într-o metodă sau constructor, nu? că nu poți să-l dai doar în clasă undeva.
adăugat autor Hovercraft Full Of Eels, sursa
Trebuie să creați un constructor și să îl utilizați. Trebuie să citiți despre utilizarea metodelor și constructorilor.
adăugat autor Hovercraft Full Of Eels, sursa
Priviți notația @Override . Foarte la îndemână pentru a indica erori cum ar fi eroarea de compilare.
adăugat autor Andrew Thompson, sursa
Întrebați-vă: Ce face add (field) ? Când este posibil/necesar să o faceți? De asemenea, unele sfaturi: grupați fiecare declarație care nu este scrisă în nici o metodă și nu îi răspândiți pe întregul cod. Mai bine încă: adăugați-le la constructorul dvs.
adăugat autor IchBinKeinBaum, sursa
Keystrokes is not abstract and does not override abstract method keyTyped (java.awt.event.KeyEvent) in java.awt.event.KeyListener.

Aceasta înseamnă că interfața KeyListener pe care clasa Keystrokes revendică să o implementeze are alte metode care trebuie implementate, dar nu ați reușit. Implementați metoda keyTyped și aruncați o privire la javadocs pentru a vedea dacă ați pierdut oricare alții.

Asta ar trebui să te ducă la următoarea ta problemă.

0
adăugat
Mă simt atât de prost ... am scris TextArea în loc de "txtArea". Multumesc tuturor.
adăugat autor Edmund Doyle, sursa

Java este sensibil la minuscule; ați denumit metoda KeyTyped în locul clasei necesareTyped din clasa de bază.

0
adăugat
Hopa, îmi pare rău, nu am văzut că acest răspuns a fost deja furnizat! Și am vrut să spun interfața, nu clasa de bază ...
adăugat autor ekolis, sursa