Boolean - 它应该停止的时候(JAVA)

时间:2015-11-12 09:42:35

标签: java button jframe boolean jpanel

所以我现在几乎都在终点线,在选择新歌或播放新歌时停止播放音乐有困难。

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()命名了一种方法,音乐在它应该停止时停止。我试过,如果该功能有效,它确实如此,方法没有任何问题,但这段代码。

你们看到我可能会对布尔人感到困惑,而我要做的就是制作这样的东西:

首先我选择一首歌,所以我使用 Open 按钮并选择一个文件。然后按播放播放歌曲。 (这里 - >)所以每当我再次播放Open时,音乐应该停止。这就是我想要做的事情,但我无法让它发挥作用。我现在可能会失明,但所有的帮助都会受到赞赏!

编辑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();


                        }
                    }
                }
            });

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

EDIT PART 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语句使其工作!

1 个答案:

答案 0 :(得分:3)

你有2个错误

  • 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();
    }

}