KeyDown + Thread / deprecation

Status
Nicht offen für weitere Antworten.

Marcel_Handball

Bekanntes Mitglied
Schönen guten Abend zusammen,
ich versuche zum ersten Mal einen KeyDown in meine Applets miteinzubinden, allerdings habe ich zwei probleme:

1) Es kommt eine Fehlermeldung (deprecation) bei folgendem Applet
Code:
import java.awt.*;
import java.applet.*;

public class Keys extends Applet {

    int x=50;

    public void init() {
        setBackground(Color.white);
        setLayout(null);
    }

    public boolean keyDown(Event evt, int key) {

        if (key == Event.LEFT){x--;}
        if (key == Event.RIGHT){x++;}
        repaint();
        
        return true;
    }
 
    
    public void paint(Graphics g) {
        g.drawRect(x,50,10,10);     
    }
}

und beim 2. funktioniert die KeyDown Methode gar nicht. (Während sich im Thread eine Linie ununterbrochen von Links nach Rechts bewegt und wieder zurück), soll man mit der Tastatur die Richtung ändern können:

Code:
import java.applet.*;
import java.awt.*;

public class mitkey extends Applet
{   int x=5;
    malen zeichenfeld = new malen();
    ersterthread eins = new ersterthread();
    boolean richtung=false;
    boolean weiter=false;

    
    public void init(){
        setBackground(Color.black); setLayout(null);
     
        zeichenfeld.setBackground(Color.black);
        zeichenfeld.setBounds(10,10,400,300);
        add(zeichenfeld);  
        
        eins.start();
        
    }

    public class ersterthread implements Runnable{
        Thread lauf;

        void start(){
            if(lauf==null){lauf= new Thread(this); lauf.start(); weiter=true;}
        }
    
        public void run(){
            while(weiter==true){
                if(richtung==false){x++;}
                  else{x--;}
                zeichenfeld.repaint();
                try{lauf.sleep(12);}catch(InterruptedException e){}
                if(x==200){richtung=true;}
                if(x==5){richtung=false;}
            }
        }

        void stop(){lauf=null; weiter=false;}
   
        
     public boolean keyDown(Event evt, int key) {

        if (key == Event.LEFT){richtung=true;}
        if (key == Event.RIGHT){richtung=false;}
        
        return true;
    }
    
}
    

    public class malen extends Canvas{
       public void paint(Graphics g){
           g.setColor(Color.red);
           
           g.drawLine(x,5,x,200);
           g.drawLine(x,5,x,200);
       }
    }

}

Woran liegt das? Kann mir jemand helfen oder sagen, was ich verändern soll?

Gruß Marcel
 

Wildcard

Top Contributor
OK, hier mal ein paar Dinge:
Lass dein Applet KeyListener implementieren.
In init() rufst du dann addKeyListener(this) auf.

Weiterhin werden Klassen immer groß geschrieben und ich würde dir einen Umstieg auf JApplet empfehlen, da AWT doch schon recht betagt ist.
 

Marcel_Handball

Bekanntes Mitglied
Erst einmal danke für deine Antwort,
aber das bringt mich nicht sonderlich weiter, ich hab noch keine Erfahrung mit KeyDown und hab mich ausschließlich an folgendem Beispiel orientiert:

Link

Aber auch dort gibt es einen "deprecation". Wie krieg ich diesen nun weg?
Und, warum reagiert mein Thread nicht auf den KeyDown?

Vll könntest du mir zwei/drei CodeZeilen schenken.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben