KeyListener не работает при переключении JPanels в игре - PullRequest
0 голосов
/ 01 мая 2019

Я работаю над игрой, и когда я переключаюсь с моей MenuPanel на мою настоящую игру (Player), KeyListener не будет работать, мой персонаж не будет двигаться.Я реализовал KeyListener в обоих классах.Как я могу решить эту проблему?Это фрагмент кода для игры (Player):

public class Player extends JPanel implements ActionListener, KeyListener {


         private MijnProject mainVenster;

         public Player(MijnProject mainVenster) {

        this.mainVenster = mainVenster;
        addKeyListener(this);
        setFocusable(true); 
        requestFocusInWindow();
        Timer t = new Timer();
        t.scheduleAtFixedRate(new UpdateTimerTask() , 0, PERIOD);
     }

         public void keyPressed(KeyEvent e) {

        int code = e.getKeyCode();
        if(code==KeyEvent.VK_UP) {
            up();
        }

        if(code==KeyEvent.VK_DOWN) {
            down();
        }
        if(code==KeyEvent.VK_RIGHT) {
            right();
        }
        if(code==KeyEvent.VK_LEFT) {
            left();
        }
        if(code==KeyEvent.VK_SPACE) {
            bullet();   

        }


И это часть кода для меню (MenuPanel):

public class MenuPanel extends JPanel implements ActionListener, KeyListener
{

    private JButton playKnop, highScoreKnop, quitKnop;
    private MijnProject mainVenster;

    public MenuPanel(MijnProject mainVenster) 

    {   addKeyListener(this);
        setFocusable(true); 
        this.mainVenster = mainVenster;

                playKnop = new JButton("Play");     
        playKnop.addActionListener(this);

        quitKnop = new JButton("Quit");
        quitKnop.addActionListener(this);

        highScoreKnop = new JButton("High Scores");
        highScoreKnop.addActionListener(this);

        this.add(playKnop);
        this.add(quitKnop);
        this.add(highScoreKnop);

    }


    public void actionPerformed(ActionEvent ae)
    {
        if (ae.getSource() == playKnop)
        {
            mainVenster.switchPanel(new Player(mainVenster));
        }

    }


    public void keyPressed(KeyEvent arg0) {

    }


    public void keyReleased(KeyEvent e) {

    }

    public void keyTyped(KeyEvent e) {

    }

}
...