java - 未选中复选框,即使我使用代码执行此操作
问题描述
我正在为一个学校项目编写一个类似于俄罗斯方块的 Java 游戏。在游戏中,我有一个复选框来打开/关闭音乐。
我的问题是,即使我将其设置为选中,当我单击它时也不会选中该复选框(不要理解我的错误,不是在之后,而是在我单击它之前/同时)。
好的,在我第一次初始化复选框的代码中,我将其设置为根据另一个类中提供的变量进行检查。
我尝试调试复选框发生的所有事情,但我没有得到任何我不知道的东西。
这是我初始化盒子的代码:
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()
这些是同一个盒子吗?可以解释为什么你设置变量,然后检查另一个。
推荐阅读
- mysql - mysql - 在一个表中存储通常/大部分为 NULL 列或创建 1:1 关系?
- c# - Umbraco RenderModel 来自哪里
- javascript - JavaScript 数组映射返回空数组
- reactjs - 是否可以从 saga 中初始化 React Final Form?
- java - 如何使用延迟响应解决 JSON 改造错误
- r - R 编码:创建复杂的条件摘要
- odoo - 将 res.users 继承到新模型时出错
- java - 需要有关 java.io.UnixFileSystem.getspace 方法的信息,执行哪个 unix 命令?
- sql - sql server 中两个日期之间的年份以及每个日期在 sql server 中的开始和结束日期
- php - 通过关联数组的键搜索关联数组的数组数值的差异