Java 如何检查JCheckBox的状态?

Java 如何检查JCheckBox的状态?,java,Java,选中JCheckBoxmutemusic\u框时,我想使用player.mute()将我的音乐播放器player静音。 如果未选中该选项并且播放器被禁用,则应执行命令player.mute()。如何让它工作?我的代码当前不工作(可能是因为ActionEvent) 是否选中的检查在actionPerformed中 private JCheckBox pwremember_box, mutemusic_checkbox; //GUI setup public void actionPerform

选中JCheckBox
mutemusic\u框时,我想使用
player.mute()
将我的音乐播放器
player
静音。 如果未选中该选项并且
播放器
被禁用,则应执行命令
player.mute()
。如何让它工作?我的代码当前不工作(可能是因为ActionEvent)

是否选中的检查在
actionPerformed

private JCheckBox pwremember_box, mutemusic_checkbox;

//GUI setup

public void actionPerformed(ActionEvent ae) {

    if (mutemusic_checkbox.isSelected()) {
        System.out.println("Muted!");
        player.mute();
    }
    else {
      System.out.println("Unmuted!");
      player.mute();
    } 
}
你可以使用这个方法

作为个人建议,请将
mutemusic\u box
重命名为
mutemusic复选框
或类似名称。

您可以尝试

mutemusic_box.isSelected();

首先,不需要此检查:

if (ae.getSource().equals(mutemusic_box)) {
ActionListener
应该与
JCheckBox
按钮相关联。
因此,没有任何歧义。

然后,为了知道是否选中了复选框,只需使用为其设计的
isSelected()
方法。

此外,
mute()
不是切换
播放器声音的好方法
toggleSound()
可能更有意义

正如我在评论中所解释的,您必须首先将侦听器附加到JCheckBox。

下面是一个示例代码:

checkBoxMute.addActionListener(
   new ActionListener(){
        public void actionPerformed(ActionEvent ae) {   
          if (checkBoxMute.isSelected()) {
              System.out.println("Muted!");
              player.toggleSound();
          }
          else {
              System.out.println("Unmuted!");
              player.toggleSound();
          } 
       }
   });
在这里,使用lambda进行同样的操作,而不是创建一个匿名类
ActionListener

checkBoxMute.addActionListener(
    ae -> {
        if (checkBoxMute.isSelected()) {
          System.out.println("Muted!");
          player.toggleSound();
        } else {
          System.out.println("Unmuted!");
          player.toggleSound();
        }
    });
}

我是java新手。请随意评论,这样我就可以提高我的提问技巧。问题可能出在ActionEvent中。您必须将ActionListener
(包含
actionPerformed
)添加到您的复选框中,否则GUI将不知道应该调用
actionPerformed
。您可以将此作为答案发布吗?我不知道如何做到这一点。请参阅Oracle教程,这些教程非常有助于学习基础知识和类的使用方法。在右边,至少有到个链接可以提供帮助(链接下)==>在哪里使用它?:)谢谢您的快速回复!一旦你对一个
JCheckBox
有了一个引用,你就可以在这个对象上调用它。你能给我举个例子吗?我是java新手;)@realKSMC此处您已注意到您的更新答案:)我将更改名称,谢谢。我会尝试一些东西并给出回应。谢谢你给它重新命名的想法。我试过了,但控制台上没有打印任何内容,而且声音也没有静音。知道吗?不客气。是否确实已将ActionListener附加到选中/取消选中的复选框?是。我将更新我的代码并显示
mutemusic\u复选框的外观。它未附加到。我更新了。这很简单。@realKSMC您不能编辑答案来添加自己的答案。如果您认为添加代码是有意义的,那么添加一个答案:)虽然这个代码片段可以解决这个问题,但确实有助于提高您的文章质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。
checkBoxMute.addActionListener(
    ae -> {
        if (checkBoxMute.isSelected()) {
          System.out.println("Muted!");
          player.toggleSound();
        } else {
          System.out.println("Unmuted!");
          player.toggleSound();
        }
    });
}