Fokus für KeyListener setzen

Cymatoxa

Mitglied
Hi, ich hab die JPanel Klasse überschrieben und KeyEvents hinzugefügt. Wenn ich es auf ein JFrame setzt, werden jedoch keine KeyEvents mehr behandelt. Ich nehme an, dass es daran liegt, dass das Frame die Eingame abfängt. Ich könnte dem Frame natürlich den Listener hinzufügen und die Events an das Panel weiterleiten, das wäre aber etwas unschön und umständlich. Gibt es eine andere Möglichkeit?
Danke im voraus
Cymatoxa
 
Ich hoffe ich hab mich verständlich ausgedrückt.
Hab ein kurzes Beispiel geschrieben:
Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class KeyTest extends JFrame {
    
    public KeyTest() {
        super("Test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 300);
        setLocationRelativeTo(null);
        MyPanel panel = new MyPanel();
        panel.addKeyListener(panel);
        add(panel);
        setVisible(true);
    }
    
    public class MyPanel extends JPanel implements KeyListener {

        @Override
        public void keyTyped(KeyEvent e) {
            System.out.println(e);
        }

        @Override
        public void keyPressed(KeyEvent e) {
            System.out.println(e);
        }

        @Override
        public void keyReleased(KeyEvent e) {
            System.out.println(e);
        } 
    }
    
    public static void main(String [] args) {
        new KeyTest();
    }
}

Hab schon (erfolglos) mit setFocusable() und grabFocus() etc. herumexperimentiert...
 

Neue Beiträge

Zurück