Предупреждение о подтверждении JavaFX не открывается - PullRequest
0 голосов
/ 31 октября 2018

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

AddPartController.java (Я обещаю, что это не там, где находятся операторы импорта)

import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

@FXML
private Button addPartCancelBtn;

@FXML
void addPartCancelBtnHandler(ActionEvent event) throws IOException {

    Alert alert = new Alert(AlertType.CONFIRMATION);
    alert.setTitle("Cancel Add Part");
    alert.setHeaderText("This part will not be added");
    alert.setContentText("Are you ok with this?");
    Optional<ButtonType> result = alert.showAndWait();
    if(result.isPresent() && result.get() == ButtonType.OK) {
        Stage stage;
        Parent root;
        stage = (Stage) addPartCancelBtn.getScene().getWindow();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("Main.fxml"));
        root = loader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
        System.out.println("OK PRESSED");
     } else {
        Stage stage;
        Parent root;
        stage = (Stage) addPartCancelBtn.getScene().getWindow();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("AddPart.fxml"));
        root = loader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
        System.out.println("Errror");
    }
}

Кто-нибудь может увидеть проблему здесь?

1 Ответ

0 голосов
/ 02 ноября 2018

Добавление блока Try Catch исправило это:

@FXML
void addPartCancelBtnHandler(ActionEvent event) throws IOException {
    try {
        Alert alert = new Alert(AlertType.CONFIRMATION);
    alert.setTitle("Cancel Add Part");
    alert.setHeaderText("This part will not be added");
    alert.setContentText("Are you ok with this?");
    alert.getDialogPane().setPrefSize(350, 200);
    Optional<ButtonType> result = alert.showAndWait();
    if(result.isPresent() && result.get() == ButtonType.OK) {
        Stage stage;
        Parent root;
        stage = (Stage) addPartCancelBtn.getScene().getWindow();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("Main.fxml"));
        root = loader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
        System.out.println("OK PRESSED");
     } else {
        Stage stage;
        Parent root;
        stage = (Stage) addPartCancelBtn.getScene().getWindow();
        FXMLLoader loader = new FXMLLoader(getClass().getResource("AddPart.fxml"));
        root = loader.load();
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
        System.out.println("Errror");
    }
    } catch (IOException e) {
        e.printStackTrace();
    }

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