我现在正在通过 JavaFX 做一个简单的数独游戏。现在我在对话上遇到了一些困难。我创建了两个场景,菜单场景只包含“新游戏”和“继续”按钮,主场景包含数独游戏。在主场景中,我创建了一个检查按钮来检查玩家的答案是否正确,如果不正确,则在此处显示像此img这样的对话框,如果正确,则可能会在此处显示此img。
然后我发现CONFIRMATION ALERT非常相似。我需要更改的是按钮的文本和它的动作,而当单击重试返回游戏场景并单击退出返回主场景时。
现在我知道如何为警报框中的按钮设置操作,但是我有一些新问题,我不知道如何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("");
}
}
}
}
};
噜噜哒
回首忆惘然
相关分类