Флажок не установлен, хотя я делаю это с кодом - PullRequest
0 голосов
/ 26 апреля 2019

Я пишу Java-игру, похожую на Tetris, для школьного проекта. В игре у меня есть флажок для включения / выключения музыки.

Моя проблема в том, что флажок, даже если я установил его для проверки, НЕ проверяется, когда я щелкаю по нему (не поймите меня неправильно, не ПОСЛЕ, но до / в тот же момент, когда я щелкнул по нему).

Хорошо, в моем коде, где я сначала инициализирую флажок, я установил его для проверки на основе переменной, предоставленной в другом классе.

Я попытался отладить все, что происходит с флажком, но я не получил ничего, чего я еще не знал.

Вот код, где я инициализирую поле:

music_cbox = TexturesHandler.getCheckboxTemplate();
music_cbox.setName("Music");
music_cbox.addMouseListener(Retris.getButtonHandler());
music_cbox.setLocation(Retris.WIDTH / 2 - 25, 250);

 // Setting it to checked based on the variable

if(!Retris.getAudioHandler().canPlay()) {
    music_cbox.setIcon(TexturesHandler.getUncheckedCheckBoxStyle());
    music_cbox.setSelected(false);
    System.out.println("box not selected");
} else {
    music_cbox.setIcon(TexturesHandler.getCheckedCheckBoxStyle());
    music_cbox.setSelected(true);
    System.out.println("box selected");
    }

Переменная canPlay изменяется только тогда, когда вы щелкаете поле:

if(box.isSelected()) {
    Retris.getAudioHandler().canPlay(false);
    Retris.getAudioHandler().stopMusic();
    System.out.println("Music disabled");
    box.setIcon(TexturesHandler.getUncheckedCheckBoxStyle());
    break;
    // (in a switch statement)
} else {
    Retris.getAudioHandler().canPlay(true);
    Retris.getAudioHandler().startMusic("Main_Menu.wav", "Main Menu", 0.1F);
    System.out.println("Music enabled");
    box.setIcon(TexturesHandler.getCheckedCheckBoxStyle());
    break;
}

Я также попытался box.setSelected() после установки нового значка и всего, но каким-то образом, когда я впервые щелкаю поле, он выполняет часть else вместо части if.

1 Ответ

0 голосов
/ 26 апреля 2019

Не уверен, поможет ли это, но я заметил, что при инициализации вы вызываете music_cbox.setSelected (), но затем в своем операторе if вы вызываете box.isSelected ()

Это одно и то же поле?Не могли бы объяснить, почему вы установили переменную, но затем проверьте другую.

...