Как сделать «обычное Gamecontrole-Menu» ->, если нажать esc open panel2, если нажата кнопка, то перейти на panel1? - PullRequest
0 голосов
/ 05 мая 2019

У меня есть jframe, который добавляет jpanel1. jpanel1 похож на Gameview. Если пользователь хочет сделать паузу, он может нажать esc и jpanel2 покажет. там он может нажать кнопку, чтобы вернуться на jpanel1.

Переменная Presser.value является состоянием просмотра.

Возможно, я ошибаюсь, понимая, как компилятор запускает мой код.

Presser.value=0 means->player is in game
Presser.value=1 means->player paused game
Presser.value=2 means->player pressed button and variable need reset to 0, after resumed to game.

для тестирования я добавил ключ "пробел" для возобновления в игре. Это работает. И я могу переключать бесконечные представления (вот как это должно работать)

У меня проблема только при использовании кнопки.

public class Window extends JFrame{

private JPanel jPanel1 = new JPanel1();
private JPanel jPanel2 = new JPanel2();

private Timer t;  

Presser presser = new Presser();

public Window(){
    add (jPanel1);
    pack();
    setVisible(true);

    addKeyListener(keyboardListener); 
    tester();
}


private final KeyAdapter keyboardListener = new KeyAdapter() {

    @Override
    public void keyPressed(KeyEvent e) {
        switch (e.getKeyCode()) {
            case KeyEvent.VK_ESCAPE:
                add (jPanel2);
                remove (jPanel1);
                pack();
                setVisible(true); 
                Presser.value=1;
                break;


            case KeyEvent.VK_SPACE:
                add (jPanel1);
                remove (jPanel2);
                pack();
                setVisible(true); 
                Presser.value=0;
                break;     

        }
    }
};


public void tester(){
    Timer timer = new Timer();
    timer.schedule( new TimerTask() {
        public void run() {

    System.out.println(Presser.value);
            if (Presser.value==2){
                add (jPanel1);
                remove (jPanel2);
                Presser.value=0;
                pack();
                setVisible(true); 
                timer.cancel(); 
                timer.purge();
                return;
            }

        }
    }, 0, 1000); 


}

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...