Я работаю над игрой, и когда я переключаюсь с моей 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) {
}
}