как создать кнопку остановки для моего медиаплеера - PullRequest
0 голосов
/ 29 ноября 2018

поэтому у меня есть созданный код, позволяющий мне добавлять песни в мой музыкальный проигрыватель, просматривая музыкальные файлы на вашем компьютере, а затем создается кнопка с названием песни и путем к файлу, чтобы ее можно было воспроизвести.Каждый раз, когда вы просматриваете и выбираете песню, новому медиаплееру присваивается вновь созданная кнопка песни, которая воспроизводит песню при нажатии.Я хочу добавить кнопку остановки, которая остановит либо воспроизводимую в данный момент песню, либо все песни.

вот как я создаю кнопки песни:

  public void makeSongButton(Song song) {
   MyButton myButton = new MyButton(song, "Play " + song.getName() + " (" + 
  song.getDuration() + ")", this.nextX, this.nextY);

//update nextY
this.nextY++;

// add to buttons list
this.buttons.add(myButton);


myButton.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
      //code to play a song modified from stackoverflow user jasonwaste's answer on /6072872/igraya-mp3-i-wav-v-java
      //system.out.println("play!!!");
      labelError.setText("play!");
      final MyButton myButton = (MyButton)event.getSource();
      final Song song = myButton.getSong();
      String songFile = song.getFile();
      Media media = new Media(new File(songFile).toURI().toString());
      MediaPlayer mediaPlayer = new MediaPlayer(media);
      mediaPlayer.play();


      //update player state...

      labelMsg.setText(song.getName());
    }
});

}

ThisФункция вызывается, когда кто-то нажимает на кнопку BrowseButton, которая появляется каждый раз, когда вы открываете программу, показанную ниже:

  public void makeBrowseButton(Stage primaryStage, BMPData bmpData) {

 browseButton.setOnAction(new EventHandler<ActionEvent>() {
  @Override
  public void handle(ActionEvent event) {

    labelError.setText("browse!");

    // create fileChooser so user can browse
    FileChooser fileChooser = new FileChooser();                                                                            // create object
    fileChooser.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Audio Files", "*.wav", "*.mp3", "*.aac"));    //filter for music files
    if ( !parentPath.equalsIgnoreCase("")) {                                                                                //go to previous directory if exists
            File parentPathFile = new File(parentPath);
            fileChooser.setInitialDirectory(parentPathFile);
    }
    File selectedFile = fileChooser.showOpenDialog(primaryStage);                                                           // display the dialog box

    // processing IF file was chosen
    if (selectedFile != null) {
      // extract song name and file name from selected file object
      String name = selectedFile.getName();
      String wholePath = selectedFile.getPath();
          parentPath = selectedFile.getParent();

          Song song = new Song(name, wholePath);
      //update library
      bmpData.setNewSong(song);

      //make a button for the song
      makeSongButton(song);


      createDisplay(primaryStage, bmpData);
    }
  }
});

}

Так что в последнем бите кнопки обзора мы вызываем makeSongButton, который создаеткнопка для песни, чтобы ее можно было воспроизвести, но каждый вызов makeSongbutton создает новый медиаплеер, и я хочу иметь возможность создать кнопку остановки, которая останавливает все медиаплееры ....

1 Ответ

0 голосов
/ 04 декабря 2018

Может быть с этим ...

Button btn_stop = new Button("stop it!");
btn_stop.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent event) {
            mediaPlayer.stop();
            System.out.println("Stop Media Player");
        }
    });
...