繁体   English   中英

使用按钮关闭JavaFX中的对话框

[英]Close a Dialog in JavaFX using a button

我想在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);
}

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

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();
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM