KeyListener Problem

Status
Nicht offen für weitere Antworten.

b0unc3

Bekanntes Mitglied
Hay Leute,

ich wollte mal versuchen, ein kleines Spiel in Java zu schreiben. Dafür brauche ich aber KeyEvents, nur weiß ich nciht, wie ich es machen soll, dass er die in der run() Methode auch evrarbeitet. . Hier mal der Code ausschnitt:

Code:
. . . 


	public void keyPressed ( KeyEvent e ) {
		
		if (e.getID() == KeyEvent.VK_RIGHT) {
			
			p_x_pos++; //Position des Panels auf x
		}
	}
	
	/**RUN*/
	public void run(){
		
		while ( true ) {
			
                          /**
                          *Hier soll er, wenn man die pfeil nach rechts taste drückt p_x_pos um 1 erhöhren, aber ich weiß nicht,
                          * wie ich ihm das sagen soll
                          */

			try {
				
				Thread.sleep(20);
			}
			catch ( InterruptedException ex ) {
				
				//mach nichts
			}
		}
	}

. . .


Bin dankbar für jede Hilfe
 
F

frager

Gast
hi, na dann erhöhe das doch einfach um 1? du implementierst doch sicher runnable mit deiner klasse, oder? dann mach einfach oben eine private variable und aus inneren klassen kommt man doch an die privaten daten der äußeren klasse ran...oder hab ich was nicht verstanden?

gruß
 

b0unc3

Bekanntes Mitglied
ich weiß nicht, wie ich das machen soll, dass er "p_x_pos" immer und nur um "1" erhöht, wenn man eine taste drückt, in diesem fall die pfeil nach rechts taste. . Die Variablen hab ich ja oben xD
 

Wildcard

Top Contributor
Das machst du doch aber schon ???:L
Code:
   public void keyPressed ( KeyEvent e ) {
      
      if (e.getID() == KeyEvent.VK_RIGHT) {
         
         p_x_pos++; //Position des Panels auf x
      }
   }
 

b0unc3

Bekanntes Mitglied
Wildcard hat gesagt.:
Das machst du doch aber schon ???:L
Code:
   public void keyPressed ( KeyEvent e ) {
      
      if (e.getID() == KeyEvent.VK_RIGHT) {
         
         p_x_pos++; //Position des Panels auf x
      }
   }


ja aber, wenn ich nach rechts drücke, passier nichts also das panel geht nicht nach rechts. .

hier mal den ganze Code:

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

public class Bricks extends Applet implements Runnable {
	
	//Panel ( red )
	int p_x_pos		=	40,
		p_y_pos		=	280,
		p_height	=	10,
		p_width		=	50;
	
	//Ball ( blue )
	int	x_pos	=	20,
		y_pos	=	150,
		x_speed	=	1,
		y_speed	=	0,
		radius	=	20;
	
	//Bricks ( yellow )
	
	
	//Farben
	Color blue		=	(Color.blue);
	Color red		=	(Color.red);
	Color yellow	=	(Color.yellow);
	Color lightGray	=	(Color.lightGray);
	
	
	/**Initialisieren*/
	public void init() {
		
		//Eigenschaften
		setSize( 300, 300 );
		setBackground(lightGray);
	}
	
	/**Starten*/
	public void start() {
		Thread th = new Thread (this);
		th.start();
	}
	
	/**Stoppen*/
	public void stop() {}
	
	/**Zersröre*/
	public void destroy(){}
	
	/**Panel Bewegungen*/
	//Panel nach rechts
	
	public void keyPressed ( KeyEvent e ) {
		
		if (e.getID() == KeyEvent.VK_RIGHT) {
			
			p_x_pos++;
		}
	}
	
	/**RUN*/
	public void run(){
		
		while ( true ) {
		
			repaint();
			
			try {
				
				Thread.sleep(20);
			}
			catch ( InterruptedException ex ) {
				
				//mach nichts
			}
		}
	}
	
	/**Zeichnen*/
	public void paint( Graphics g ) {
		
		//Panel/ ( red )
		g.setColor( red );
		g.fillRect(p_x_pos, p_y_pos, p_width, p_height);
		
		//Ball ( blue )
		g.setColor( blue );
		g.fillOval(x_pos, y_pos, radius, radius);
		
		//Bricks ( yellow )
		g.setColor( yellow );
	}
}
 

Wildcard

Top Contributor
Du hast den Keylistener überhaupt nicht eingehängt....
Du must auf die Komponente für die du KeyEvents erhalten willst einen KeyListener registrieren.
Code:
component.addKeyListener(KeyListener listener);
 

b0unc3

Bekanntes Mitglied
wie genau muss ich das den in meinem Fall eingeben? und in welcher methode?


so hab ich das jetzt gemacht, aber da bekomm ich n fehler:

Code:
public void run(){
		
		Bricks.addKeyListener(KeyListener keyPressed);
		
		while ( true ) {
		
			repaint();
			
			try {
				
				Thread.sleep(20);
			}
			catch ( InterruptedException ex ) {
				
				//mach nichts
			}
		}
	}

keyPressed cannot be resolved
Syntax error on token(s), misplaced constructor(s)
 

Wildcard

Top Contributor
Dein Applet muss KeyListener implementieren und dann kannst du im Konstruktor sagen
Code:
addKeyListener(this);
 

b0unc3

Bekanntes Mitglied
Danke. . hab auch gerade noch ehrausgefunden, wie man es noch anders machen könnte und so gehts xD

Code:
public boolean keyDown ( Event e, int key ) {
	      
	      if (key == Event.RIGHT) {
	         
	         p_x_pos++;
	      }
	      return true;
	   } 
	
	/**RUN*/
	public void run(){
		
		while ( true ) {
		
			repaint();
			
			try {
				
				Thread.sleep(20);
			}
			catch ( InterruptedException ex ) {
				
				//mach nichts
			}
		}
	}


Danke nochmal für deine hilfe :toll:



//EDIT:

Aber eins versteh ich nciht, wenn ich das jetzt so mache, wie du das gesagt hast, dann gehts nicht. . hab den KeyListener oben implementiert und den rest auch gemacht:

Code:
public void keyPressed ( KeyEvent e ) {
	      
	      if (e.getID() == KeyEvent.VK_RIGHT) {
	         
	         p_x_pos++;
	      }
	   }
	
	public void keyTyped( KeyEvent e ) {}
	public void keyReleased( KeyEvent e ) {}
	
	/**RUN*/
	public void run(){
		

		
		while ( true ) {
		
			addKeyListener(this);
			repaint();
			
			try {
				
				Thread.sleep(20);
			}
			catch ( InterruptedException ex ) {
				
				//mach nichts
			}
		}
	}
 

Wildcard

Top Contributor
Der keylistener wird in der init() geaddet und nicht in der run Methode.
keyUp und keyDown sind deprecated und sollen nicht verwendet werden.
Ich würde dir vorschlagen das du dich erst mal ein wenig in das Java-Event-Systen einliest...
 
G

Guest

Gast
ich wollte jetzt kein neues Thema aufmachen, habe aber ähnliches Problem. Mein Programm sieht so aus:

Code:
import java.util.*;
import java.applet.*;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;


public class bewegung extends Applet implements Runnable, KeyListener{

	int posx = 100;
	int posy = 100;

public void init()
{
    setSize( 300, 300 ); 
	setBackground (Color.black);
	addKeyListener(this);
}



public void run() {

	}
	
	

public void keyTyped(KeyEvent e) {

		switch (e.getKeyChar()){
		case 4 :
			posx=posx-2;
                        repaint ();
			break;
		case 6 :
			posx=posx+2;
                        repaint ();
			break;
		case 8 :
			posy=posy+2;
                        repaint ();
			break;
		case 2 :
			posy=posy-1;
                        repaint ();
			break;
			
		}
		
	}

	
	public void paint (Graphics g)
	{
		g.setColor(Color.red); 
		g.drawString("*",posx,posy);
	
	}

	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
	}

}

Es soll sich der * eben nach der Tastatureingabe bewegen. Leider tut sich nichts. Zum Vergleich wollte ich das obige Programm mal laufen lassen und hab es wie beschrieben so umgeändert und im Quelltext den KeyListener in die init gesetzt. Funktionierte aber leider auch nicht. Wo ist der Fehler? Vor allem bei meinem eigenen Programm.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Problem mit KeyListener in kombination mit dem ActionListener Java Basics - Anfänger-Themen 4
TheSorm KeyListener Problem Java Basics - Anfänger-Themen 4
D KeyListener und ActionListener Problem Java Basics - Anfänger-Themen 6
A Erste Schritte Problem mit KeyListener Java Basics - Anfänger-Themen 6
C Problem mit JPopupMenu, JTextField und Keylistener Java Basics - Anfänger-Themen 2
M problem mit keylistener Java Basics - Anfänger-Themen 2
C Einloggen auch per ENTER Taste (KeyListener Problem) Java Basics - Anfänger-Themen 8
O 2 TextFields + 1 KeyListener = Problem :( Java Basics - Anfänger-Themen 2
D Fokus-Problem mit KeyListener Java Basics - Anfänger-Themen 2
G Keylistener problem Java Basics - Anfänger-Themen 7
J Problem mit KeyListener in einem Spiel Java Basics - Anfänger-Themen 5
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
B Bild per KeyListener drehen Java Basics - Anfänger-Themen 1
javalux123 Keylistener auf andere Fenster Java Basics - Anfänger-Themen 3
M KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
M Mit KeyListener Farbe von Label ändern Java Basics - Anfänger-Themen 13
N Java Keylistener Java Basics - Anfänger-Themen 2
B KeyListener funkioniert nicht Java Basics - Anfänger-Themen 2
F KeyListener Java Basics - Anfänger-Themen 3
S Erste Schritte 2D Grafik Probleme mit KeyListener. Java Basics - Anfänger-Themen 18
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
J-Gallus Keylistener verstehen Java Basics - Anfänger-Themen 17
S Keylistener Java Basics - Anfänger-Themen 16
S Keylistener im Grafikfenster Java Basics - Anfänger-Themen 3
H Mouse- und KeyListener Probleme? Java Basics - Anfänger-Themen 5
N KeyListener in Thread Java Basics - Anfänger-Themen 0
LexeB4F for schliefe in KeyListener Java Basics - Anfänger-Themen 3
R KeyListener auslagern Java Basics - Anfänger-Themen 3
J KeyListener aus anderer Klasse bereitet Probleme Java Basics - Anfänger-Themen 1
Z KeyListener funktioniert nicht? Weshalb? Java Basics - Anfänger-Themen 8
T KeyListener Java Basics - Anfänger-Themen 2
Gfreak23 Input/Output KeyListener funktioniert auf Laptop nicht allerdings auf Tower-PC Java Basics - Anfänger-Themen 8
J KeyListener - mal wieder... Java Basics - Anfänger-Themen 2
M KeyListener Java Basics - Anfänger-Themen 3
S KeyListener/ActionListener/paint()/repaint() Java Basics - Anfänger-Themen 3
D KeyListener nicht mehr aktiv nach ActionPerformed Java Basics - Anfänger-Themen 2
C Mehrere Tasten beim KeyListener gleichzeitig lesen Java Basics - Anfänger-Themen 2
L Input/Output Java 3D mit KeyListener Java Basics - Anfänger-Themen 1
S KeyListener reagiert nicht. Java Basics - Anfänger-Themen 4
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J KeyListener,MouseListener,MouseMotionListener und static Java Basics - Anfänger-Themen 7
P Klassen Bei KeyEvent in KeyListener den Tastendruck abbrechen Java Basics - Anfänger-Themen 5
B KeyListener als allgemeine Methode Java Basics - Anfänger-Themen 5
H KeyListener auf ganzes Fenster setzen Java Basics - Anfänger-Themen 14
0 KeyListener ausserhalb der Applikation Java Basics - Anfänger-Themen 5
G KeyListener Java Basics - Anfänger-Themen 4
J KeyListener funtioniert nicht! Java Basics - Anfänger-Themen 3
J KeyListener Java Basics - Anfänger-Themen 11
P Input/Output KeyListener reagiert nicht Java Basics - Anfänger-Themen 4
G KeyListener, Fokus Java Basics - Anfänger-Themen 8
K Input/Output KeyListener funktioniert nicht Java Basics - Anfänger-Themen 3
A Input/Output Keylistener Aktiv schalten Java Basics - Anfänger-Themen 8
J keyListener - Genau 1 Aktion soll bei 1 Tastenausdruck ausgeführt werden Java Basics - Anfänger-Themen 11
S KeyListener Java Basics - Anfänger-Themen 2
Maxim6394 KeyListener geht nicht Java Basics - Anfänger-Themen 15
A Wie KeyListener adden? Java Basics - Anfänger-Themen 15
Maxim6394 KeyListener funktioniert nicht Java Basics - Anfänger-Themen 20
U KeyListener StackOverflowError Java Basics - Anfänger-Themen 2
W KeyListener auf Applet mit Runnable Java Basics - Anfänger-Themen 4
M Apfel-Spiel KeyListener Java Basics - Anfänger-Themen 33
J KeyListener (keyTyped) funktioniert nicht Java Basics - Anfänger-Themen 9
Luk10 KeyListener Java Basics - Anfänger-Themen 13
S KeyListener aus anderer Klasse hinzufügen Java Basics - Anfänger-Themen 19
P KeyListener im Applet Java Basics - Anfänger-Themen 2
S KeyListener-Anwendung Java Basics - Anfänger-Themen 7
O KeyListener funktioniert nur wenn er will Java Basics - Anfänger-Themen 2
A KeyListener funzt ned Java Basics - Anfänger-Themen 6
D KeyListener, Unterscheidung Groß/Kleinbuchstaben Java Basics - Anfänger-Themen 3
S KeyListener als class? Java Basics - Anfänger-Themen 4
F Applet mit KeyListener, "Alt"-Taste und Konflikt mit Browser Java Basics - Anfänger-Themen 2
P KeyListener Java Basics - Anfänger-Themen 2
S KeyListener für einfaches Programm Java Basics - Anfänger-Themen 3
S KeyListener aktiv auch wenn minimiert? Java Basics - Anfänger-Themen 4
Z Globaler Keylistener Java Basics - Anfänger-Themen 2
V KeyListener Beispiel Java Basics - Anfänger-Themen 13
T canvas killt KeyListener Java Basics - Anfänger-Themen 2
Das Brot Nach .add(JRadioButton) funktioniert der KeyListener nicht mehr Java Basics - Anfänger-Themen 2
J Keylistener aber wie jTextField auswahl? Java Basics - Anfänger-Themen 3
D KeyListener, nichts passiert Java Basics - Anfänger-Themen 6
U ActionListener und KeyListener - KeyListener funktioniert nicht Java Basics - Anfänger-Themen 2
D Keylistener zu langsam Java Basics - Anfänger-Themen 7
G Keylistener in einer Schleife Java Basics - Anfänger-Themen 9
M TabbedPane: KeyListener funktioniert nicht mehr Java Basics - Anfänger-Themen 8
N KeyListener ohne GUI? Java Basics - Anfänger-Themen 5
M KeyListener Java Basics - Anfänger-Themen 3
T KeyListener wird nicht ausgelöst Java Basics - Anfänger-Themen 6
O KeyListener Java Basics - Anfänger-Themen 8
Developer_X KeyListener ohne JFrame Java Basics - Anfänger-Themen 13
H KeyListener Java Basics - Anfänger-Themen 4
Developer_X KeyListener Actions (hat mit Java3D zu tun) Java Basics - Anfänger-Themen 20
H KeyListener funktioniert nicht Java Basics - Anfänger-Themen 8
Developer_X JFrame soll KeyListener adden Java Basics - Anfänger-Themen 32
F Keylistener Java Basics - Anfänger-Themen 12
hdi KeyListener : keyTyped() nicht nutzbar? Java Basics - Anfänger-Themen 1
StickToFreak Runnable + KeyListener? Java Basics - Anfänger-Themen 32
dl85hej Keylistener Java Basics - Anfänger-Themen 16
H KeyListener will nicht reagieren Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
G Prob. mit KeyListener und Unterklasse Java Basics - Anfänger-Themen 5
G Keylistener nur besimmte Zeichen zulassen Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben