JOptionPane.showMessageDialog приходится выходить дважды - PullRequest
0 голосов
/ 26 мая 2018

Итак, у меня есть JOptionPane, которое появляется, когда определенное условие не выполняется, и по какой-то причине, когда я нажимаю «Ok», оно появляется снова, но затем при нажатии «Ok» во втором диалоговом окне это происходит.

Ниже приведен метод создания диалогового окна:

public boolean checkBet()
{
    if(currentPlayer.getBet() <= 0)
    {
        JOptionPane.showMessageDialog(null, "You must place a bet before you can roll your dice!.",
                "Bet Required!",
                JOptionPane.ERROR_MESSAGE);
        return false;
    }
    else
        return true;
}

, и здесь вызывается вышеуказанный метод:

@Override
public void actionPerformed(ActionEvent e) {
    checkBet();
    if(checkBet())
    {
        setRollingPlayer(currentPlayer);
        new Thread() {
            @Override
            public void run() {
                gameEngine.rollPlayer(rollingPlayer, 500, 2000, 500);
            }
        }.start();  
    }
}

Ответы [ 2 ]

0 голосов
/ 26 мая 2018

Когда вы вызываете функцию checkBet() в actionPerformed(), она упоминалась два раза.Функция checkBet() также будет выполняться внутри if().

Удалить вызов один раз, и он будет выполнен один раз.

0 голосов
/ 26 мая 2018

Вы звоните checkBet дважды в методе actionPerformed

@Override
public void actionPerformed(ActionEvent e) {
    checkBet(); // Here
    if(checkBet()) // And here
    {
...