我想在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);
}
如果非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();
}
});