このダイアログクラスを使用してプロジェクトを作成しています。確認ダイアログを使用しようとすると、[はい]ボタンのEventHandlerを作成し、それをメソッド呼び出しに渡す必要があります。実行しましたが、クリックしてログアウトすると、確認の[はい]ボタンをクリックする前にイベントが実行されます。
メソッド呼び出し
public void btnSairClicked(ActionEvent event) {
Dialog.buildConfirmation("Confirmar", "Deseja realmente sair?")
.addYesButton(actionPerformed(event))
.addNoButton(null)
.build()
.show();
}
private EventHandler actionPerformed(ActionEvent event) {
String loginUrl = "http://" + Constants.TARGET_HOST + ":" + Constants.TARGET_PORT + Constants.TARGET_SERVICE_LOGOUT_PATH;
try {
JSONObject json = HttpUtil.getJSON(false, loginUrl, null, null, null);
loginManager.logout();
} catch (IOException ex) {
Logger.getLogger(MainViewController.class
.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
ダイアログクラス:
public static Builder buildConfirmation(String title, String message) {
return buildConfirmation(title, message, null);
}
public static Builder buildConfirmation(String title, String message, Window owner) {
return new Builder()
.create()
.setOwner(owner)
.setTitle(title)
.setConfirmationIcon()
.setMessage(message);
}
public Builder addYesButton(EventHandler actionHandler) {
return addConfirmationButton("Sim", actionHandler);
}
protected Builder addConfirmationButton(String buttonCaption, final EventHandler actionHandler) {
Button confirmationButton = new Button(buttonCaption);
confirmationButton.setMinWidth(BUTTON_WIDTH);
confirmationButton.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent t) {
stage.close();
if (actionHandler != null)
actionHandler.handle(t);
}
});
stage.buttonsPanel.getChildren().add(confirmationButton);
return this;
}