Как сделать всплывающее меню в том же контроллере JavaFX? - PullRequest
0 голосов
/ 01 июня 2018

У меня проблема с тем, чтобы всплывающее меню работало в моем коде. То, как я его настроил, заключается в том, что, если нажать кнопку, она откроет новую сцену (которая запрашивает, хотят ли они что-то удалить).)

однако эта новая сцена - это еще один файл FXML со своим собственным контроллером, и когда я попытался заставить новый контроллер FXML что-то удалить, это не сработало, потому что код не в том же контроллере, поэтомуя не могу выполнить код из ПЕРВОГО контроллера.

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

<AnchorPane id="AnchorPane" prefHeight="89.0" prefWidth="388.0" 
xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8" 
fx:controller="finalprojectjava.DeletePopupController">
   <children>
  <Label layoutX="48.0" layoutY="14.0" prefHeight="32.0" prefWidth="293.0" text="Are you sure you want to delete contact?">
     <font>
        <Font size="16.0" />
     </font>
  </Label>
  <Button layoutX="92.0" layoutY="50.0" mnemonicParsing="false" onAction="#acceptButton" prefHeight="25.0" prefWidth="91.0" text="Yes" />
  <Button layoutX="195.0" layoutY="50.0" mnemonicParsing="false" onAction="#declineButton" prefHeight="25.0" prefWidth="91.0" text="No" />
   </children>
</AnchorPane>

1 Ответ

0 голосов
/ 02 июня 2018

Вот пример использования диалогов JavaFX для получения ответа от пользователя через всплывающее окно.Вы можете узнать больше о силе этого API здесь .

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        VBox pane = new VBox(10);
        pane.setPadding(new Insets(10));

        Button btnShowDialog = new Button("Show Popup");
        // Set the action to call the showPopup() method when clicked
        btnShowDialog.setOnAction(e -> showPopup());

        pane.getChildren().add(btnShowDialog);

        Scene scene = new Scene(pane);
        primaryStage.setScene(scene);

        primaryStage.show();
    }

    private void showPopup() {

        Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
        alert.setTitle("Delete Contact?");
        alert.setHeaderText("Are you sure you want to delete this contact?");

        // Set the available buttons for the alert
        ButtonType btnYes = new ButtonType("Yes");
        ButtonType btnNo = new ButtonType("No");

        alert.getButtonTypes().setAll(btnYes, btnNo);

        // This allows you to get the response back from the user
        Optional<ButtonType> result = alert.showAndWait();

        if (result.isPresent()) {
            if (result.get() == btnYes) {
                System.out.println("User clicked Yes!");
            } else if (result.get() == btnNo) {
                System.out.println("User clicked No!");
            }
        }

    }
}
...