簡體   English   中英

布爾值-何時應停止(JAVA)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM