gpt4 book ai didi

JavaFX - 如何知道是否按下了取消

转载 作者:搜寻专家 更新时间:2023-10-31 19:32:38 29 4
gpt4 key购买 nike

我如何知道在此 JavaFX 对话框中是否按下了“确定”按钮或“取消”按钮。

对话代码:

public String delimiter;

public void delimiterYES() throws IOException {
delimiter=new String();
TextInputDialog dialog = new TextInputDialog();
dialog.setTitle("Delimiter");
dialog.setHeaderText("Enter the delimiter");

Optional<String> result = dialog.showAndWait();
if (result.isPresent()) {
delimiter=result.get();
}
}

最佳答案

如果存在结果,则用户按下“确定”。如果没有结果,则用户可能按下了取消,但他们可能刚刚使用操作系统关闭窗口功能关闭了对话窗口。

Optional<String> result = new TextInputDialog().showAndWait();
if (result.isPresent()) {
// ok was pressed.
} else {
// cancel might have been pressed.
}

要真正了解按钮是否被按下,您可以使用 Dialog javadoc 中提到的过滤器“对话框验证/拦截按钮操作”部分。

final Button cancel = (Button) dialog.getDialogPane().lookupButton(ButtonType.CANCEL);
cancel.addEventFilter(ActionEvent.ACTION, event ->
System.out.println("Cancel was definitely pressed")
);

示例代码:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.stage.Stage;

import java.util.Optional;

public class DialogSample extends Application {
@Override
public void start(Stage stage) throws Exception {
Button showButton = new Button("show");
showButton.setOnAction(event -> showDialog(stage));
showButton.setPrefWidth(100);
stage.setScene(new Scene(showButton));
stage.show();

showButton.fire();
}

private void showDialog(Stage stage) {
TextInputDialog dialog = new TextInputDialog();
dialog.initOwner(stage);
dialog.setTitle("Delimiter");
dialog.setHeaderText("Enter the delimiter");

final Button ok = (Button) dialog.getDialogPane().lookupButton(ButtonType.OK);
ok.addEventFilter(ActionEvent.ACTION, event ->
System.out.println("OK was definitely pressed")
);

final Button cancel = (Button) dialog.getDialogPane().lookupButton(ButtonType.CANCEL);
cancel.addEventFilter(ActionEvent.ACTION, event ->
System.out.println("Cancel was definitely pressed")
);

Optional<String> result = dialog.showAndWait();
if (result.isPresent()) {
System.out.println("Result present => OK was pressed");
System.out.println("Result: " + result.get());
} else {
System.out.println("Result not present => Cancel might have been pressed");
}
}

public static void main(String[] args) {
Application.launch();
}
}

关于JavaFX - 如何知道是否按下了取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31673853/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com