Jpanel mit Keylistener

Status
Nicht offen für weitere Antworten.

michi2

Bekanntes Mitglied
hi,
Ich wollte ner JPanel einen Keylistener hinzufügen, das ganze läst sich zwar ohne Probleme compilieren, aber der Keylistener wird einfach nicht aufgerufen, was mach ich falsch?
 
Sorry, ich vergas zu sagen das ich die JPanel als Zeichenfläche (wie bei AWT ne Canvas) benütze. (drum hab ich's auch in der Kategorie 'Spieleprogrammierung' geschrieben)
 
Gib mal ein bisschen Code, hab das auch schon zig mal gemacht und hat immer wieder funktioniert :wink:
 
Das Panel muss den Focus besitzen, dazu muss es fokusierbar sein, was ein Panel normalerweise nicht ist. Ruf "setFocusable( true )" auf.
 
Beni: werd ich probieren, Danke!
Hobbit_Im_Blutrausch: Da gibts kaum Code:
Code:
class Spielflaeche extends JPanel
   {
   private Image image = new BufferedImage(450, 350, BufferedImage.TYPE_INT_RGB);
   int figx = 0;
   int figy =0;
   public void update(Graphics g)
      {
      paint(g);
      }
   Spielflaeche()
      {
      setBackground(Color.black);
      repaint();
      }
   
   public void paintback()	//hier wird das Hintergrund gezeichnet!
      {
      Graphics g = image.getGraphics();
      g.drawImage(loadImage("back.jpg"),0,0,this);
      }
   public void paintfigur(int x, int y)	//hier wird eine Figur gezeichnet!
      {
      Graphics g = image.getGraphics();
      figx= x;
      figy =y;
      g.drawImage(loadImage("fig.gif"), x, y, this);
      }
   public void paint(Graphics g)  // Die wichtigste Methode: hier wird gezeichnet!
      {
      g.drawImage(image,0,0,this);
      }
   
   public Image loadImage(String filename)
      {
      Toolkit toolkit = Toolkit.getDefaultToolkit();
      MediaTracker ladekontrolle = new MediaTracker(this);
      // Bild laden und beim MediaTracker registrieren
      Image Bild = toolkit.getImage(filename);
      ladekontrolle.addImage(Bild,0);
      
      // Solange warten, bis das Bild ganz geladen ist
      try
         {
         ladekontrolle.waitForID(0);
         }
      catch(InterruptedException e)
         {
         // Das Laden ist fehlgeschlagen
         System.out.println("Fehler!");
         return null;
         }
      return Bild;
      }
   
   // Diese Methode liefert die minimale Größe der Canvas
   public Dimension getMinimumSize()
      {
      return new Dimension(400,300);
      }
   // Die Lieblingsgröße setzen wir auf die Minimalgröße
   public Dimension getPreferredSize()
      {
      return getMinimumSize();
      }
   }
und dem wird mit
Code:
      gamePanel.addKeyListener(new MyKeyLauscher());
ein Keylistener hinzugefügt
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben