首页 > 解决方案 > 未选中复选框,即使我使用代码执行此操作

问题描述

我正在为一个学校项目编写一个类似于俄罗斯方块的 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部分。

标签: javacheckboxgame-development

解决方案


不确定这是否有帮助,但我注意到在初始化中您调用 music_cbox.setSelected() 但然后在您的 if 语句中调用 box.isSelected()

这些是同一个盒子吗?可以解释为什么你设置变量,然后检查另一个。


推荐阅读