java panel 监听不到键盘事件,为什么给增加了键盘监听器后,按上键盘都没反应


package demo01;

import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class game {
    static int r_x = 0;
    static int r_y= 100;
    static JPanel jPanel = new JPanel();
    private JFrame jFrame = new JFrame();  
            public static void main(String[] args) {
                
        // TODO Auto-generated method stub    
         JOptionPane jOptionPane = new JOptionPane();
         JOptionPane.showConfirmDialog(null, "提醒", "开始游戏?",JOptionPane.YES_NO_OPTION);     JFrame jFrame = new JFrame();
            jFrame.setSize(500, 500);            
            jFrame.setVisible(true);
            jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             jFrame.setLayout(null);
            
             jFrame.add(jPanel);
             jFrame.setVisible(true);  
             jPanel.setLayout(null);
             jPanel.setBackground(Color.green);    
             jPanel.setBounds(r_x,r_y, 70, 30);
             jPanel.setVisible(true);
             
    }
class Mypanel extends game implements KeyListener{

    public void Mypanel () {
        
    }
    
    
public void keyPressed(KeyEvent e) {

        // TODO Auto-generated method stub
        int n=e.getKeyCode();//获取点击的键
        if (n == KeyEvent.VK_UP) {
            r_y = r_y - 50;
        } else if (n== KeyEvent.VK_DOWN){
            r_y = r_y + 50;
        }else if (n== KeyEvent.VK_LEFT){

        }else if (n== KeyEvent.VK_RIGHT){

        }
    
}

     

    
    



    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }

    

    @Override
    public void keyReleased(KeyEvent e) {
        // TODO Auto-generated method stub
        
    }
    
}
}

因为panel是容器,它没法获得焦点
要么你监听textbox这种可以获得光标的控件
要么你调用API监听全局的键盘输入
不要监听panel的键盘输入,键盘根本不会对panel进行输入

你在main中增加监听事件撒

addKeyListener(this)类似这样