JAVAFX: запретить пользователю открывать новое окно, пока он не закроет первое - PullRequest
0 голосов
/ 16 января 2019

У меня есть два отдельных контроллера и FXML-файлы. В первом контроллере вы управляете главным окном, здесь вы можете нажать кнопку и открыть новое окно.

Я хочу запретить пользователю открывать столько окон, сколько он хочет. Он должен иметь возможность только открыть одно окно и закрыть его снова, прежде чем он сможет открыть следующее.

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

Надеюсь, вы поможете мне. Заранее спасибо

   @FXML
   private void addSongsToSelectedPlaylist() throws IOException {


    if (tempPlaylistName!="Library"){

        // WILL LOAD THE STAGE OF THE POPUP WINDOW AND PROVIDE THE CONSTRUCTOR THE PLAYLIST NAME
      //  AddSongController addSongController = new AddSongController();

     //   addSongController.enterSelectionMode(tempPlaylistName);


        try {
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("addSongToPlaylistPopUp.fxml"));
            Parent root1 = (Parent) fxmlLoader.load();
            Stage stage = new Stage();
            stage.initModality(Modality.WINDOW_MODAL);
            stage.getIcons().add(new Image("sample/images/Music-icon.png"));
            stage.setResizable(false);
            stage.setAlwaysOnTop(true);

            stage.setTitle("Add songs to your playlist");
            stage.setScene(new Scene(root1));
            stage.showAndWait();

        } catch (IOException e){

            System.out.println(e.getCause());

        }

1 Ответ

0 голосов
/ 17 января 2019

Вы можете установить модальность на APPLICATION_MODAL, чтобы приложение не открывало любое новое окно до тех пор, пока не закроется первое:

   stage.initModality(Modality.APPLICATION_MODAL);
...