[英]Boolean - It doesn't stop when it should (JAVA)
所以我現在快要到達終點了,在選擇新歌或播放新歌時,我無法停止音樂。
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();
}
}
}
});
你們可以看到。 但是有兩個按鈕,一個是“ 播放”按鈕,一個是“ 打開”按鈕(“ 打開”按鈕具有FileChooser等這樣的方法,因此這里沒有什么特別的)。 我為stop()
命名了一個方法,在該方法下,音樂也應在此停止。 我試過了該函數是否起作用,因此該方法沒有什么問題,但這段代碼沒有問題。
就像你們看到的那樣,我可能會對布爾值感到困惑,而我想做的是做這樣的事情:
首先,我選擇一首歌曲,然后使用“ 打開”按鈕選擇一個文件。 然后按“ 播放”播放歌曲。 (在這里->),所以每當我再次播放“打開”時,音樂都會停止。 多數民眾贊成在我想做的事情,但我無法使其工作。 我現在可能是盲人,但所有幫助將不勝感激!
編輯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");
}
}
}
});
sant = true,falsk = false
編輯部分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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.