Метод выдачи ссылок в другом контроллере - PullRequest
0 голосов
/ 12 февраля 2020

Я не уверен на 100%, как лучше всего описать эту проблему, но я буду стараться изо всех сил.

Я занимаюсь разработкой приложения musi c, у меня разные windows в одном и я загрузил панели в небольшое окно приложения, показанное ниже: enter image description here

enter image description here

Бит, который меняется с зеленой кнопки на экран списка воспроизведения, - это окно, в которое загружены файлы F XML.

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

Я видел кое-что о ссылке на точный экземпляр контроллера, который я использую для основного приложения, но я не уверен, как это сделать. Я пытался создать stati c версию mainAppController, но это был отдельный экземпляр, и поэтому он не ссылался должным образом.

Единственный метод, на который мне нужно сослаться, - это метод addPlayerListener. Я попытался сделать это stati c, но поскольку он имел дело со слайдером и т. Д. Из файла F XML, который нельзя было сделать stati c, это не сработало.

Упрощенная версия контроллера и файла F XML, на который мне нужно сослаться из-за пределов класса, выглядит следующим образом:

public class MainAppController implements Initializable {

@FXML AnchorPane anchor;
@FXML AnchorPane window;
public static AnchorPane pane;
private boolean isPlay = false;
private boolean makeChanges = false;
public static MediaPlayer player;
PlayerUtils playerUtil = new PlayerUtils();
@FXML Slider volume, progressBar;
@FXML Label playTime, fullDuration;

String songFile;
Media songMedia;


Duration duration;
boolean updating = false;

//declaring the media player listener so that it can be removed and added
public InvalidationListener listener = new InvalidationListener()
        {
            public void invalidated(Observable ov) {
                //if changes to the slider are being made then values will not be updated
                //as it causes interference when trying to move the slider
                if(makeChanges == false){
                    updateValues();
                }

            }
        };

//this just plays or pauses depending
@FXML public void play_pause(){
    play_pauseFunction();
}

//updates values of current time display (playTime) and updates the slider value
//called from the listener so constantly updating
protected void updateValues() {
        //updates values of playTime and slider values
}

//THIS IS THE ONE I NEED TO ACCESS

//makes sure the player has no listeners before adding a new one
public void addPlayerListener(){
    player.currentTimeProperty().removeListener(listener);
    player.currentTimeProperty().addListener(listener);
}

@Override
public void initialize(URL url, ResourceBundle rb) {



}

}

Извините, если этот вопрос задан плохо, но я не смог Я не думаю о другом способе изложения.

Заранее спасибо за помощь

Поправка: Я бы хотел получить доступ к этому методу:

public void play_pauseFunction(){
    if(isPlay == false){
        //temp while playlists not working
        if(player == null){
            songFile = "E:\\Project\\Whupsh\\Songs\\Whenever, wherever - Shakira.mp3";
            player = new MediaPlayer(PlayerUtils.getSongMedia(songFile));
            progressBar.setDisable(false);
            volume.setDisable(false);
            duration = player.getMedia().getDuration();
        }
        player.play();
        //adds listener to link with slider
        addPlayerListener();
        play_pause.getStyleClass().remove("play");
        play_pause.getStyleClass().add("pause");
        isPlay = true;
    }
    else{

        player.pause();
        play_pause.getStyleClass().remove("pause");
        play_pause.getStyleClass().add("play");
        isPlay = false;
    }
}

Этот метод в том же классе, что и все другие методы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...