复选框未选中,即使我用代码完成
Checkbox is not checked, even though I do it with code
我正在为一个学校项目编写一个类似于俄罗斯方块的 Java 游戏。在游戏中我有一个复选框来打开音乐 on/off.
我的问题是复选框,即使我将其设置为选中,但在我单击它时却未选中(请不要理解我的错误,不是之后,而是 before/at 我单击时的同一时刻点击它)。
好吧,在我第一次初始化复选框的代码中,我将其设置为根据另一个 class.
中提供的变量进行检查
我尝试调试复选框发生的一切,但我没有得到任何我不知道的东西。
这是我初始化盒子的代码:
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
部分。
不确定这是否有帮助,但我注意到在初始化中调用 music_cbox.setSelected() 但随后在 if 语句中调用 box.isSelected()
这些是同一个盒子吗?可以解释为什么你设置变量然后检查另一个变量。
我正在为一个学校项目编写一个类似于俄罗斯方块的 Java 游戏。在游戏中我有一个复选框来打开音乐 on/off.
我的问题是复选框,即使我将其设置为选中,但在我单击它时却未选中(请不要理解我的错误,不是之后,而是 before/at 我单击时的同一时刻点击它)。
好吧,在我第一次初始化复选框的代码中,我将其设置为根据另一个 class.
中提供的变量进行检查我尝试调试复选框发生的一切,但我没有得到任何我不知道的东西。
这是我初始化盒子的代码:
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
部分。
不确定这是否有帮助,但我注意到在初始化中调用 music_cbox.setSelected() 但随后在 if 语句中调用 box.isSelected()
这些是同一个盒子吗?可以解释为什么你设置变量然后检查另一个变量。