# Jpanel mit Keylistener



## michi2 (28. Feb 2006)

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?


----------



## The_S (28. Feb 2006)

Hat vielleicht eine der Components auf dem JPanel den Focus und nicht das JPanel selbst!?


----------



## michi2 (28. Feb 2006)

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)


----------



## The_S (28. Feb 2006)

Gib mal ein bisschen Code, hab das auch schon zig mal gemacht und hat immer wieder funktioniert  :wink:


----------



## Beni (28. Feb 2006)

Das Panel muss den Focus besitzen, dazu muss es fokusierbar sein, was ein Panel normalerweise nicht ist. Ruf "setFocusable( true )" auf.


----------



## michi2 (28. Feb 2006)

Beni: werd ich probieren, Danke!
Hobbit_Im_Blutrausch: Da gibts kaum 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

```
gamePanel.addKeyListener(new MyKeyLauscher());
```
ein Keylistener hinzugefügt


----------



## michi2 (3. Mrz 2006)

Danke, mit 'setFocusable( true )' funktionierts!


----------

