如何检查JCheckBox的状态?

时间:2017-07-30 17:04:19

标签: java

当选中JCheckBox player时,我想使用player.mute()将我的音乐播放器mutemusic_box静音。 如果未选中且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();
    } 
}

3 个答案:

答案 0 :(得分:4)

首先不需要检查:

if (ae.getSource().equals(mutemusic_box)) {

ActionListener应与JCheckBox按钮相关联 所以,没有任何含糊之处。

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

除了mute()不是一个很好的命名方法来切换Player的声音 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();
        }
    });
}

答案 1 :(得分:1)

您可以使用isSelected方法。

boolean isChecked = mutemusic_box.isSelected();

作为个人建议,请将mutemusic_box重命名为muteMusicCheckBox或类似。

答案 2 :(得分:-1)

你可以尝试

mutemusic_box.isSelected();