終了ボタン(左上隅のx)をクリックするたびに、プログラムを終了するかどうかをユーザーに尋ねるポップアップを表示しようとしています。しかし、私はFXMLを使用していて、ポップアップをロードしようとすると例外をスローする必要がありますprimaryStage.setOnCloseRequest(new EventHandler<WindowEvent>{}
私は呼び出し元のメソッドでエラーをスローしても未処理の例外エラーが発生します。私は試してみることを試みましたが、エラーは発生しませんが、コードは実行されません。私は現在、別のメソッドにラップすることができるかどうかを確認しようとしているので、例外を回避することはできますが、何も動作していないようです。 Exception
が投げられたsetOnCloseRequest
を使用する方法はありますか?例外は、機能インタフェースの抽象メソッドのthrows
句の例外に割り当てられない場合ラムダ(または同等のもの)で例外をスローする - javafx
public class Main extends Application {
@Override
public void start(Stage primaryStage)throws Exception {
File f = new File("Goal.txt");
boolean bool = false;
if (f.exists())
{
FXMLLoader loader = new FXMLLoader(getClass().getResource("MainPage.fxml"));
Parent root = loader.load();
primaryStage.setTitle("Money Saver Program");
primaryStage.setScene(new Scene(root, 600, 400));
primaryStage.show();
}
else
{
bool = f.createNewFile();
Parent root = FXMLLoader.load(getClass().getResource("OpeningPage.fxml"));
primaryStage.setTitle("Money Saver Program");
primaryStage.setScene(new Scene(root, 638, 400));
primaryStage.show();
}
primaryStage.setOnCloseRequest(new EventHandler<WindowEvent>() {
public void handle(WindowEvent event) {
event.consume();
closeProgram();
}
});
}
public static void main(String[] args) throws Exception {
launch(args);
}
public void closeProgram(){
try{internalCloseProgram();}catch (Exception e){}
}
public void internalCloseProgram()throws Exception{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FinalExitMessage.fxml"));
Parent root = fxmlLoader.load();
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.setTitle("Money Saver Program");
stage.show();
}
}