Я пишу 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
.