[JAVA] Keylistener

Beat_G

Stammgast
Hallo,

Ich habe folgendes Problem und zwar habe ich mich den ganzen Nachmittag mit dem KeyListener von Java herumgeschlagen. Also, ich möchte gerne folgendes wenn ich die Linke Pfeiltaste drücke soll sich die Variable "car_ypos" z.B. um +1 verändern. Hier noch mein Programm:

Vielen Dank für eure Hilfe!!!

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


public class CarCrash extends JFrame {
	
	static CarCrash fenster;
	Bildleinwand bildanzeige;
	
	Image b_car;
	Image b_street;
	Image b_police;
	
	int police_ypos = 200;
	int police_xpos = 0;	
	int car_ypos = 210;
	int car_xpos = 635;


  class CMeinActionLauscher implements ActionListener {
    public void actionPerformed(ActionEvent e) {
		String label;
		
		label = e.getActionCommand();
		
		if(label.equals("Beenden"))
			System.exit(0);
   
    }
  }  

  CarCrash(String titel) {
    super(titel);

    setLayout(new GridLayout());
	
	bildanzeige = new Bildleinwand();
	add(bildanzeige);
	
	JMenuBar menueleiste = new JMenuBar();
	setJMenuBar(menueleiste);
	
	JMenu menu1 = new JMenu("Datei");
	JMenu menu2 = new JMenu("Optionen");
	JMenu menu3 = new JMenu("Hilfe");
	
	JMenuItem item1 = new JMenuItem("Beenden");
	JMenuItem item2 = new JMenuItem("Sound");
	JMenuItem item3 = new JMenuItem("Spielsteuerung");

	
	menu1.add(item1);
	menu2.add(item2);
	menu3.add(item3);	
	
	menueleiste.add(menu1);
	menueleiste.add(menu2);
	menueleiste.add(menu3);
	
	item1.addActionListener(new CMeinActionLauscher());
	item2.addActionListener(new CMeinActionLauscher());
	item3.addActionListener(new CMeinActionLauscher());

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
	
	ImageIcon tmp1 = new ImageIcon("img/street.png");
	b_street = tmp1.getImage();
	
	ImageIcon tmp2 = new ImageIcon("img/car.png");
	b_car = tmp2.getImage();
	
	ImageIcon tmp3 = new ImageIcon("img/police.png");
	b_police = tmp3.getImage();
	
	bildanzeige.repaint();
  }
	

  public static void main(String[] args) { 
	
    CarCrash fenster = new CarCrash("Car Crash");
    fenster.pack();
    fenster.setSize(500,800);
    fenster.setVisible(true);
	fenster.setResizable(true);
  }
  
  class Bildleinwand extends JPanel {
	  public void paintComponent(Graphics g) {
		super.paintComponent(g);
		
		g.drawImage(b_street,0,0,500,800, this);
		g.drawImage(b_car,car_ypos,car_xpos,60,110, this);
		g.drawImage(b_police,police_ypos,police_xpos,60,110,this);
		
		setPreferredSize(new Dimension(500, 800));
		setMinimumSize(new Dimension(500, 800));
		setMaximumSize(new Dimension(500, 800));
	
	}
}
}

MfG
 

froeschli

Stammgast
Ich glaube dir fehlt noch etwas in der Art eines KeyListeners. Bin mir aber nicht sicher wie der heisst. Für die Maus wäre die ein MouseListener, aber für die Tastatur... Google doch mal.

Gruss froeschli
 

nimloth713

Mitglied
Hallo Beat_G

Ja, die Registrierung für den KeyListener fehlt. Wenn ich dein Programm richtig verstehe müsstest du diesen bei der "Bildleinwand" registrieren.

Hast du das Beispiel selbst gebastelt oder von einem Buch? Wenn ja aus welchem?

Viele Grüsse
 
Oben