gpt4 book ai didi

java - boolean 值 - 它应该停止时却没有停止(JAVA)

转载 作者:行者123 更新时间:2023-12-01 22:00:10 25 4
gpt4 key购买 nike

所以我现在快到终点线了,在选择一首新歌曲或播放一首新歌曲时无法停止音乐。

static boolean thread2Status = false;

btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnPlay) {
if(thread2Status) {
mp3_player.play();
lblPlaying.setText("Enjoy the music!");

}
else if(!thread2Status) {
stop();
}
}

}
});

btnOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnOpen) {

try {
if(thread2Status = true) {
Choose();


} else if(!thread2Status) {
stop();
}

} catch (IOException e1) {
e1.printStackTrace();
}

}
}
});

正如你们所看到的。有两个按钮,一个用于 Play 按钮,一个用于 Open 按钮(Open 按钮有一个方法,其中 FileChooser 等就在那里那里没什么特别的)但是。我为 stop() 命名了一个方法,音乐在应该停止的时候停止。我尝试了该函数是否有效,并且确实如此,因此除了这段代码之外,该方法没有任何问题。

正如你们所看到的,我可能会对 boolean 值感到困惑,我想做的是做这样的事情:

首先,我选择一首歌曲,然后使用打开按钮并选择一个文件。然后我按播放来播放歌曲。 (此处 ->)所以每当我再次播放“打开”时,音乐应该停止。这就是我想做的,但我无法让它发挥作用。我现在可能是瞎子,但我们将不胜感激所有帮助!

编辑1.1:

btnPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnPlay) {
if(thread2Status) {
mp3_player.play();
lblPlaying.setText("Enjoy the music!");
}
else if(!thread2Status) {
stop();
}
thread2Status = !thread2Status; // this line switches boolean
}
}
});

btnOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnOpen) {

try {
if(thread2Status) { // not necessary to explicit compare booleans
Choose();
} else if(!thread2Status){
stop();
}
thread2Status = !thread2Status; // this line switches boolean


} catch (IOException e1) {
e1.printStackTrace();


}
}
}
});

现在发生的问题是我必须双击打开播放才能使其工作

编辑第 2.0 部分(“打开”按钮的问题,我必须双击它)

btnOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnOpen) {
try {
if(sant) {
Choose();
} else{
stop();
}
sant = !sant;


} catch (IOException e1) {
System.out.println("we been balling");


}
}
}
});

桑特=真,福斯克=假

编辑第 4.0 部分通过删除 Openbutton 中的 if-else 语句使其正常工作!

最佳答案

你有两个错误

  • if(thread2Status = true) 您正在分配,而不是比较!只需使用 if(thread2Status)
  • 您永远不会更新您的 boolean 标志,因此 if 中的程序流程始终相同

if (e.getSource() == btnPlay) {
if(thread2Status) {
mp3_player.play();
lblPlaying.setText("Enjoy the music!");
}
else {
stop();
}
thread2Status = !thread2Status; // this line switches boolean
}

if(e.getSource() == btnOpen) {
try {
if(thread2Status) { // not necessary to explicit compare booleans
Choose();
} else {
stop();
}
thread2Status = !thread2Status; // this line switches boolean


} catch (IOException e1) {
e1.printStackTrace();
}

}

关于java - boolean 值 - 它应该停止时却没有停止(JAVA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33668396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com