当选中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();
}
}
答案 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();