使用按钮关闭JavaFX中的Dialog

问题描述 投票:0回答:1

我想在JavaFX中创建一个联系人应用程序,我创建了一个应该打开的对话框,当我想打电话给某人并用一个执行按钮关闭它时,而不是按钮类型。

我试图为它编写代码(下面),但它只是没有关闭对话框,我不知道为什么。

有人可以帮忙吗?

谢谢。

public void showCallDialog(Contact contact){
    contact = tableView.getSelectionModel().getSelectedItem();
    Dialog<ButtonType> dialog = new Dialog<>();
    dialog.setTitle("Calling");
    FXMLLoader loader = new FXMLLoader();
    try{
        URL url = Controller.class.getResource("call.fxml");
        loader.setLocation(url);
        dialog.getDialogPane().setContent(loader.load());
        CallController controller = loader.getController();
        controller.setNameLabel(contact);
        dialog.show();
        Button button = controller.getEndCallButton();
        button.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent actionEvent) {
                System.out.println("pressed");//tested if it listens, and this prints out the "pressed"
                dialog.close();
            }
        });
    }catch (IOException e){
        System.out.println("Couldn't load the dialog");
        e.printStackTrace();
    }
}

@FXML
public void call(){
    Contact contact = tableView.getSelectionModel().getSelectedItem();
    showCallDialog(contact);
}
java javafx
1个回答
1
投票

如果非Dialog值被分配给null财产,则result仅关闭。这需要在您的代码中“手动”完成:

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent actionEvent) {
        System.out.println("pressed");//tested if it listens, and this prints out the "pressed"
        dialog.setResult(ButtonType.CLOSE);
        dialog.close();
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.