У меня есть класс GUI, который управляет моим приложением. Когда пользователь хочет удалить свою учетную запись в моей программе, я хочу, чтобы появилось окно с предупреждением и потребовало, чтобы он подтвердил или отменил свое действие, поэтому он случайно не удаляет свою учетную запись.Получить метод отображения для возврата boolean? - JavaFX
package application;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.*;
/**
* An Alert Box for the GUI
* to display errors to the user.
*
*/
public class AlertBox
{
Stage window;
public boolean display(String title, String message)
{
boolean cancel = false;
window = new Stage(); // Create the stage.
window.initModality(Modality.APPLICATION_MODAL); // If window is up, make user handle it.
window.setTitle(title);
window.setMinHeight(350);
window.setMinWidth(250);
VBox root = new VBox(); // Root layout.
Label warning = new Label(message); // Message explaining what is wrong.
HBox buttonLayout = new HBox(); // The yes and cancel button.
Button yesButton = new Button("Yes"); // Yes button for the user.
Button noButton = new Button("No"); // No button for the user.
yesButton.setOnAction(e ->
{
cancel = false;
});
noButton.setOnAction(e ->
{
cancel = true;
});
buttonLayout.getChildren().addAll(yesButton, noButton);
root.getChildren().addAll(warning, buttonLayout);
root.setAlignment(Pos.CENTER);
Scene scene = new Scene(root);
window.setScene(scene);
window.show();
}
/**
* Closes the window and returns whether the user said yes or no.
* @param variable
* @return
*/
private boolean close(boolean variable)
{
window.close();
return variable;
}
}
Я хочу, чтобы мой класс GUI, чтобы точно знать, что произошло, когда пользователь был в классе AlertBox. Пользователь нажал кнопку «Да» или «Нет»? Поэтому я подумал о том, чтобы сделать метод отображения логическим. Здесь проблема заключается в том, что мое выражение прослушивателя событий не может возвращать какие-либо значения, поскольку оно находится внутри обратного вызова типа void. Затем я подумал: «О, я просто сделаю метод close верным логическим». Но потом я вспомнил, что исходная функция, которую я назвал был:
AlertBox warning = new AlertBox;
boolean userWantsToDelete = warning.display("Warning!", "You are about to delete your account. Are you sure you would like to do this?");
который хочет метод отображения возвращать переменную, а не закрытым способом. Я тоже не могу просто позвонить, так как это не сработает. Что я могу сделать, чтобы помочь в решении этой проблемы? Большое спасибо.
Это близко к дубликата: [Block выполнение программы до тех пор, пока пользователь не нажмет кнопку] (http://stackoverflow.com/questions/23121580/block-program-execution-until-user-clicks-button) – jewelsea
Это не отвечает на ваш вопрос, но как насчет прохождения интерфейса EventHandler для отображения метода? – Tomasz
* На самом деле было бы лучше установить его в своем классе перед вызовом метода 'display'. – Tomasz