Сейчас я делаю простую игру судоку от JavaFX.И теперь я столкнулся с некоторыми трудностями в диалоге.Мне пришлось создать две сцены, в меню сцены содержались только кнопки «новая игра» и «продолжить», основная сцена содержала игру судоку.В основной сцене я создал кнопку проверки, чтобы проверить, верен ли ответ геймера, где, если он неправильный, показать диалог, подобный этому img here , и когда он правильный, ему может понравиться этот img здесь .
Тогда я обнаружил, что ПОДТВЕРЖДЕНИЕ ПОДТВЕРЖДЕНИЯ очень похоже.Все, что мне нужно изменить, - это текст кнопки и ее действие, в то время как при нажатии кнопки «Повторить», чтобы вернуться на игровую сцену, и кнопки «Выход», чтобы вернуться к основной сцене.
Теперь я знаю, как настроить действие для кнопкиокно оповещения, но у меня возник новый вопрос для этого, я не знаю, как вызвать ventHandler<ActionEvent>
в выражении.
Вот мой код для окна оповещения два
(исходный кодот https://code.makery.ch/blog/javafx-dialogs-official/)
Alert right = new Alert(AlertType.CONFIRMATION);
right.setTitle("Checking Result");
right.setHeaderText(null);
right.setContentText("Your answer is correct. Would you like to start
again");
ButtonType restart = new ButtonType("Restart");
ButtonType quit = new ButtonType("Quit");
right.getButtonTypes().setAll(restart, quit);
Alert wrong = new Alert(AlertType.CONFIRMATION);
wrong.setTitle("Checking Result");
wrong.setHeaderText(null);
wrong.setContentText("Your answer is incorrect. Would you like to try
again");
ButtonType retry = new ButtonType("Retry");
wrong.getButtonTypes().setAll(retry, quit);
код для действий
Optional<ButtonType> result = right.showAndWait();
if (result.isPresent() && result.get() == quit) {
stage.setScene(main_frame);
}else if(result.isPresent() && result.get() ==
restart) {// call the actionevent clears}
Optional<ButtonType> result = wrong.showAndWait();
if (result.isPresent() && result.get() == quit) {
stage.setScene(main_frame);
}else if(result.isPresent() && result.get() ==
retry) {// call the actionevent clears}
код для обработчика событий
final EventHandler<ActionEvent> clears = new EventHandler<ActionEvent>() {
@Override
public void handle(final ActionEvent event) {
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (digging_array[i][j] == 1) {
sudoku[i][j].setText(Integer.toString(final_Array[i][j]));
} else {
sudoku[i][j].setText("");
}
}
}
}
};