KeyListener Funktioniert nicht

StrikeTom

Bekanntes Mitglied
Hallo Leute,
ich habe den Fehler noch nicht gefunden und deshalb frage ich hier mal nach:
Warum funktioniert der KeyListener nicht:
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JPanel;

public class GamePanel extends JPanel implements KeyListener
{
	Spieler spieler;
	public GamePanel(final Spieler spieler)
	{
		this.spieler = spieler;
		this.addKeyListener(this);
	}
	public void keyPressed(KeyEvent e)
	{
		if (e.getKeyCode() == KeyEvent.VK_UP)
        {
			spieler.hochBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_RIGHT)
        {
        	spieler.rechtsBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_LEFT)
        {
        	spieler.linksBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_W)
        {
        	spieler.hochBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_D)
        {
        	spieler.rechtsBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_A)
        {
        	spieler.linksBewegung();
        }
        if (e.getKeyCode() == KeyEvent.VK_ESCAPE)
        {
        	 System.exit(0);
        }
       }
	 public void paintComponent(Graphics g) 
     {
         super.paintComponent(g);
         this.setBackground(Color.white);
         this.repaint();
         spieler.draw(g);
     }
	
	public void keyReleased(KeyEvent arg0){}
	public void keyTyped(KeyEvent arg0){}
}
Und die Main:
Java:
import javax.swing.JFrame;

public class Main
{
	public static void main(String[] args)
	{
		Spieler s = new Spieler(100, 100);
		GamePanel g = new GamePanel(s);
		JFrame f = new JFrame("Game");
		f.setSize(500, 500);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(g);
		f.setVisible(true);
	}
}
An der Klasse Spieler liegt es nicht, da ich auch keine anderen aktionen mit Tasten ausführen kann. (Siehe Zeile 42-45)

Danke im voraus:)
 

dku

Mitglied
probier im Konstruktor vom Panel einfach mal vor dem Listener
Java:
this.setFocusable(true);

Gruß,
David
 

Quaxli

Top Contributor
Ich würde danach noch ein requestFocus() hinhängen - vorsichtshalber.

Noch ein paar Anmerkungen zum Code:

Der repaint-Aufruf in der paitnComponent-Methode hat da nichts verloren.

Java:
     public void paintComponent(Graphics g) 
     {
         super.paintComponent(g);
         this.setBackground(Color.white);
         this.repaint();    <---------------  weg damit
         spieler.draw(g);
     }

Repaints triggert man üblicherweise aus einem separaten Thread an.


Der folgende Code sieht für mich auch nicht gut aus:

Java:
        if (e.getKeyCode() == KeyEvent.VK_UP)
        {
            spieler.hochBewegung();
        }

Ich unterstelle mal, daß in der Klasse Spieler dann Code steht, der ungefähr so aussieht: spieler.y = spieler.y - 1 (oder so). Damit wirst Du spätestens Probleme kriegen, wenn Du mehr als eine Taste drücken willst. Meist geht man so vor, daß man im KeyListener nur boolean-Werte verändert und diese im GameLoop abfragt.

Die separate Klasse Main ist im Prinzip nicht nötig. Genaus könntest du sowas wie im u. a. Beispiel basteln. Das soll jetzt aber nicht heißen, daß das falsch ist - wobei der Konstruktor mit der finalen Spieler-Variable a) für mich augenfeindlich ist ;) und b) ich mir vorstellen könnte, daß das später noch zu Problemen führt.

Java:
import java.awt.*;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*;

public class GamePanel extends JPanel implements KeyListener {
	

	Rectangle	rectangle;
	JFrame f;

	public static void main(String[] args) {
    new GamePanel();
	}


	public GamePanel() {
    rectangle = new Rectangle(10,10,10,10);
		this.addKeyListener(this);
    this.setFocusable(true);
    this.requestFocus();
		
		f = new JFrame("Game");
		f.setSize(500, 500);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.add(this);
		f.setVisible(true);

	}

	public void keyPressed(KeyEvent e) {
		
		if (e.getKeyCode() == KeyEvent.VK_UP) {
			System.out.println("up");
		}
		
    //usw
    .....
		
	}

	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		this.setBackground(Color.white);
		//this.repaint();  hat hier nix verloren
    //usw
    ....
	}

   ....
}

Die Klasse Spieler hatte ich natürlich nicht, daher habe ich die kurzfristig mal durch Rectangle ersetzt, damit ich testen konnte, ob es lauffähig ist - also nix dabei denken (oder daß nächste mal gleich ein kompilierbares Beispiel posten :D:D:D)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M KeyListener funktioniert nicht während Timer läuft Spiele- und Multimedia-Programmierung 26
B KeyListener Bug Spiele- und Multimedia-Programmierung 2
B Den KeyListener in einer JavaFXML Application benutzen Spiele- und Multimedia-Programmierung 2
A TileMap KeyListener - Problem Spiele- und Multimedia-Programmierung 2
R Probleme mit JPanel!KeyListener geht nicht Spiele- und Multimedia-Programmierung 6
M KeyListener Spiele- und Multimedia-Programmierung 8
T Problem mit JnR-Steuerung / KeyListener Spiele- und Multimedia-Programmierung 6
A KeyListener - Thread Problem Spiele- und Multimedia-Programmierung 2
F Problem mit KeyListener in Applet Spiele- und Multimedia-Programmierung 4
D Space Invaders(KeyListener Problem) Spiele- und Multimedia-Programmierung 3
S Ping Pong: KeyListener in Paint und while Spiele- und Multimedia-Programmierung 10
Developer_X Java "Multi"KeyListener Spiele- und Multimedia-Programmierung 15
C Anfängerfrage: Plazierung Panel im JFrame und KeyLIstener Spiele- und Multimedia-Programmierung 4
A Mit KeyListener zwei Tasten gleichzeitig abfragen Spiele- und Multimedia-Programmierung 2
T Doppel KeyListener Spiele- und Multimedia-Programmierung 16
S Probleme mit dem Licht und dem KeyListener Spiele- und Multimedia-Programmierung 2
K Jump n Run Keylistener und Schleifen Spiele- und Multimedia-Programmierung 8
M Jpanel mit Keylistener Spiele- und Multimedia-Programmierung 6
D Pfeiltasten beim KeyListener Spiele- und Multimedia-Programmierung 1
R KeyListener hält nicht mit Spiele- und Multimedia-Programmierung 14
P Pokemon Spiel Funktioniert nicht ? Spiele- und Multimedia-Programmierung 3
D MIDIdevice open funktioniert nicht Spiele- und Multimedia-Programmierung 1
A Kollision funktioniert nicht richtig bei zu schneller Geschwindigkeit des Spielers Spiele- und Multimedia-Programmierung 0
P Teamspeak interface mit JFrame funktioniert nicht Spiele- und Multimedia-Programmierung 3
D Kollision funktioniert unten aber nicht oben Spiele- und Multimedia-Programmierung 4
N Animation funktioniert icht wie sie soll Spiele- und Multimedia-Programmierung 10
D Java Bild bewegen funktioniert nicht Spiele- und Multimedia-Programmierung 8
Damtonix Gameloop funktioniert nicht! Spiele- und Multimedia-Programmierung 6
temi libGDX Box2d ApplyTorque() funktioniert nicht Spiele- und Multimedia-Programmierung 1
S KeyEvent funktioniert nicht, wenn Buttons dem Frame hinzugefügt werden Spiele- und Multimedia-Programmierung 7
C Export als .jar funktioniert nicht richtig (JAVA 3D) Spiele- und Multimedia-Programmierung 5
A Minecraft Minecraft, Programm funktioniert nur in Eclipse richtig Spiele- und Multimedia-Programmierung 24
F LWJGL: Licht und GL_LINES funktioniert nicht Spiele- und Multimedia-Programmierung 6
J KeyMapping funktioniert nicht Spiele- und Multimedia-Programmierung 5
J Sound einbinden funktioniert nicht Spiele- und Multimedia-Programmierung 13
D Slick Lib - Bilder einlesen funktioniert nicht Spiele- und Multimedia-Programmierung 2
M Mathetrainer - Reset Button funktioniert nicht! Spiele- und Multimedia-Programmierung 8
K Wie funktioniert hier ein Score ? Spiele- und Multimedia-Programmierung 4
O A* funktioniert, aber zu langsam Spiele- und Multimedia-Programmierung 10
D Highscoreliste eines Applets funktioniert online nicht Spiele- und Multimedia-Programmierung 4
aze Java 3D 1.5.2 auf Mac(Snow Leopard) funktioniert nicht mit Java SE 1.6 Spiele- und Multimedia-Programmierung 3
K "Animation" funktioniert nur bedingt. Spiele- und Multimedia-Programmierung 8
G Undo/Redo funktioniert nicht richtig Spiele- und Multimedia-Programmierung 2
Kidao Warum funktioniert hier keine Tastaturabfrage? Spiele- und Multimedia-Programmierung 6
S Sudoku Solver funktioniert beim 2. Aufruf nicht mehr Spiele- und Multimedia-Programmierung 11
R Kollisionserkennung funktioniert nicht Spiele- und Multimedia-Programmierung 3
R KeyListern funktioniert nicht. :S ? Spiele- und Multimedia-Programmierung 7
D Beispielprogram funktioniert nicht Spiele- und Multimedia-Programmierung 8
M Sonnensystem - Eigenrotation der Planeten funktioniert nicht Spiele- und Multimedia-Programmierung 4
M Wie funktioniert der RotPosPathInterpolator? Spiele- und Multimedia-Programmierung 5
B Bild wird nicht geladen Spiele- und Multimedia-Programmierung 4
Fabel TicTacToe MiniMax Algorithmus geht nicht Spiele- und Multimedia-Programmierung 4
ThoraxLaneus Minecraft MCP-Client mit Optifine fertig machen in IntelliJ klappt nicht ganz Spiele- und Multimedia-Programmierung 6
K Mein Jump and Run charakter bewegt sich nicht mehr rückwärts... Spiele- und Multimedia-Programmierung 0
Mika_MDF Minecraft Eclipse startet Minecraft nicht? Spiele- und Multimedia-Programmierung 23
H Musik Datei lädt nicht? Spiele- und Multimedia-Programmierung 8
JeremyStarTM Minecraft Minecraft Spigot Server akzeptiert JAR-Version nicht Spiele- und Multimedia-Programmierung 8
K Das Leerzeichen der Tastatur wird nicht gleichgesetzt mit dem Leerzeichen aus der Text Datei Spiele- und Multimedia-Programmierung 5
coolian slick lwjgl text darstellen mit UnicodeFont funktoniert nicht? Spiele- und Multimedia-Programmierung 11
Z Minecraft Multiplayer geht nicht Spiele- und Multimedia-Programmierung 2
L Minecraft 1.7.10 Server startet nicht Spiele- und Multimedia-Programmierung 1
R Memory - Nicht alle Button lassen sich aktivieren? Spiele- und Multimedia-Programmierung 1
C Java findet FluidSynth nicht Spiele- und Multimedia-Programmierung 2
N der Player bewegt sich nicht Spiele- und Multimedia-Programmierung 14
N Warum tut der Gegner nicht das was er soll? Spiele- und Multimedia-Programmierung 13
N Warum ist das Fenster nicht schwarz? Spiele- und Multimedia-Programmierung 26
B Programmieren wie der Befehl /ban in Minecraft geblockt wird aber nicht /ban mit einem Argument Spiele- und Multimedia-Programmierung 1
A Dateifehler - Öffnet nicht Spiele- und Multimedia-Programmierung 7
R Laufbewegung geht nicht.. Spiele- und Multimedia-Programmierung 1
J OpenGL Bild wird nicht richtig angezeigt Spiele- und Multimedia-Programmierung 2
S GetBufferStrategy-Methode wird nicht angezeigt Spiele- und Multimedia-Programmierung 6
F vlcj läuft nicht exportiert, aber in Eclipse Spiele- und Multimedia-Programmierung 2
A MouseListener ändert nicht das Lable Icon. Spiele- und Multimedia-Programmierung 2
G LWJGL Rendert nicht Spiele- und Multimedia-Programmierung 3
A Spielball bewegt sich nicht richtig, prallt falsch ab Spiele- und Multimedia-Programmierung 7
Blender3D VLCJ Video lässt sich nicht mehr abspielen nach mysql Installation Spiele- und Multimedia-Programmierung 1
J Programm kann Audio Datei nicht finden Spiele- und Multimedia-Programmierung 7
Viktim Snake - Schlange wächst nicht Spiele- und Multimedia-Programmierung 3
J Mensch Ärgere Dich nicht - Künstliche Intelligenz Spiele- und Multimedia-Programmierung 2
L Mensch ärgere dich nicht Spiele- und Multimedia-Programmierung 9
Polarfuchs Status von Midi Datei(wird gerade abgespielt oder nicht) Spiele- und Multimedia-Programmierung 0
A Bild(sequenz) wird nicht geladen Spiele- und Multimedia-Programmierung 1
4 AudioSystem.write() wirft IllegalArgumentException, obwohl dies eig. nicht passieren dürfte Spiele- und Multimedia-Programmierung 2
V Methoden werden zwar ausgeführt führen aber nicht zum Ergebnis Spiele- und Multimedia-Programmierung 5
M [JOGL] eclipse export Runnable Jar - startet nicht Spiele- und Multimedia-Programmierung 3
B LWJGL / OPENGL Kriege Depth-Test nicht hin :( Spiele- und Multimedia-Programmierung 0
S Slick2D KeyInput reagiert nicht. Spiele- und Multimedia-Programmierung 3
S Quaxli's Heli Spiel läuft nicht nach Plan Spiele- und Multimedia-Programmierung 2
W [libGDX] findet SplashScreen.png nicht Spiele- und Multimedia-Programmierung 4
T LWJGL VBO's funktionieren nicht, geben aber auch keinen Fehler Spiele- und Multimedia-Programmierung 0
Androbin Kollision zwischen Raster und Nicht-Raster Spiele- und Multimedia-Programmierung 2
O Fehler bei Programmierung lässt Figur nicht bewegen Spiele- und Multimedia-Programmierung 5
Androbin Mein Spiel will sich nicht zeichnen lassen !!! Spiele- und Multimedia-Programmierung 7
B Mein Programm reagiert nicht auf den Tasstendruck Spiele- und Multimedia-Programmierung 1
F HashMap liefert nicht gewünschten Wert (gar nix) Spiele- und Multimedia-Programmierung 5
J mensch ärger dich nicht Spiele- und Multimedia-Programmierung 1
M Spiele Tutorial.. Findet Bilddateien nicht Spiele- und Multimedia-Programmierung 6
G Ausführbare Jar findet Bilddateien nicht... Spiele- und Multimedia-Programmierung 4
P Rotation von Sprite klappt nicht Spiele- und Multimedia-Programmierung 4
A Minecraft Java Ubuntu Minecraft Server startet nicht - ERROR (SIGSEGV) Spiele- und Multimedia-Programmierung 7

Ähnliche Java Themen

Neue Themen


Oben