Закройте диалог в JavaFX с помощью кнопки - PullRequest
0 голосов
/ 19 февраля 2019

Я хочу создать приложение контактов в 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);
}

1 Ответ

0 голосов
/ 19 февраля 2019

Dialog закрывается только в том случае, если для свойства result назначено не null значение.Это нужно сделать «вручную» в вашем коде:

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();
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...