# ActionListener und KeyListener - KeyListener funktioniert nicht



## Ulumulu1510 (21. Mrz 2010)

Hallo zusammen,

Ich bin dabei - mit dem begrenzten Wissen, welches wir bisher in der Schule hatten - ein Snake zu programmieren. Bitte wundert euch daher nicht über eventuelle Kompliziertheiten, Swing und all das tolle Zeug hatten wir noch nicht...

Die Schlange steuere ich mit Tastendrücken, zudem benötige ich Buttons für versch. Einstellungen. Sobald ich jedoch einen Button erstelle, werden keine Tastendrücke mehr registriert. Kann mir jemand sagen an was das liegt?

Herzlichen Dank schon mal für eure Hilfe!

Hier noch den (aufs nötigste) abgespeckte Code (lauffähiges Applet):


```
import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Test_Keilist extends Applet implements KeyListener, ActionListener {
	
	//Knöpfe und Liste definieren
	Button bNeuesSpiel;
		
	int richtung=1;	//  1: rechts,  2:links,  3:oben,  4:unten
	
	public void init() {
		
		//Neues Spiel beginnen
		bNeuesSpiel	= new Button("neues Spiel");
		add(bNeuesSpiel);
		bNeuesSpiel.addActionListener(this);
		addKeyListener(this);
	}
	
	public void actionPerformed(ActionEvent evt) {
		
		if (evt.getSource() == bNeuesSpiel) {
			
//			neuesSpiel();
			System.out.println(richtung);
			repaint();
		}
	}

	public void keyPressed(KeyEvent event) {
		//Tasten Spieler 1:
		if(event.getKeyCode() == KeyEvent.VK_UP) {
			richtung=1;		
		} else if(event.getKeyCode() == KeyEvent.VK_DOWN) {
			richtung=3;		
		} else if(event.getKeyCode() == KeyEvent.VK_RIGHT) {
			richtung=2;		
		} else if(event.getKeyCode() == KeyEvent.VK_LEFT) {
			richtung=4;		
		}
		
	}
	public void keyReleased(KeyEvent event) {
		System.out.println(richtung);
	}
	public void keyTyped(KeyEvent event) {
		
	}

	public void paint(Graphics g) {
		
		g.drawString("Welcome to Java!!", 50, 60 );
		
	}
}
```


----------



## eRaaaa (21. Mrz 2010)

Ulumulu1510 hat gesagt.:


> Kann mir jemand sagen an was das liegt?



Durch das adden des Buttons, bekommt jetzt dieser den Fokus beim Start.


```
setFocusable(true);
	requestFocus();
```
o.ä. könnten evtl. helfen, wobei dann nach einem Klick auf den Button natürlich der Fokus wieder beim Button wäre (da wäre dann also auch noch was zu tun *g*)


----------



## Ulumulu1510 (22. Mrz 2010)

Wow! hat wunderbar funktioniert! Herzlichern Dank!  :toll:

Gruss, Ulumulu


----------

