Я пытаюсь удалить из определенного фрейма панель № 1 (которая содержит только один JButton) и добавить к ней панель № 2, которая содержит некоторые ключевые события.
Я постоянно получал ошибку, когдаKeyEvents не будет регистрироваться, но пока я тестировал некоторые вещи, я обнаружил, что если я не уберу панель № 1 и не добавлю панель № 2 поверх фрейма, KeyListeners будет регистрироваться, только если JButton напанель № 1 не выбрана (только нажатием клавиши «TAB»).
Может ли кто-нибудь помочь мне устранить эту ошибку?
Это панель № 2:
public class paintTest extends JPanel implements KeyListener
{
public paintTest(){
addKeyListener(this);
setFocusable(true);
}
@Override
public void keyPressed(KeyEvent e) {}
@Override
public void keyReleased(KeyEvent e) {}
@Override
public void keyTyped(KeyEvent e) {}
}
А это Главный класс:
public static void main(String[] args)
{
JFrame mainMenu = new JFrame();
drawMainMenu(mainMenu);
mainMenu.setVisible(true);
mainMenu.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void drawMainMenu(JFrame frame)
{
frame.setBounds(0, 0, 360, 300);
frame.setLocationRelativeTo(null);
JPanel panel = new JPanel();
frame.add(panel);
JButton newGame = new JButton();
newGame.setBounds(130, 120, 100, 30);
newGame.setText("NEW GAME");
newGame.addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent arg0)
{
paintTest gamePlay = new paintTest();
// frame.remove(panel); **HERE IS THE LINE OF CODE I WANT TO REMOVE**
frame.add(gamePlay);
frame.setBounds(0,0,512,512);
frame.setLocationRelativeTo(null);
}
});
panel.setLayout(null);
panel.add(newGame);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}