В настоящее время я новичок в проекте javaFX. Это мое первое использование диалогового окна в классе javaFX. Когда я нажимаю кнопку «Применить», я хотел бы получить информацию в полях, которые я ввел, но не закрывая окно. В настоящее время, как только я нажимаю кнопку, окно закрывается. Вы знаете, как мне поступить? Заранее благодарю
//Init
this.dialog = new Dialog();
dialog.setTitle("Edit Propriété");
dialog.setHeaderText("Veuillez entrer les valeurs que vous désirez");
ButtonType buttonOk = new ButtonType("Ok",ButtonData.OK_DONE);
ButtonType buttonCancel = new ButtonType("Cancel", ButtonData.CANCEL_CLOSE);
ButtonType buttonApply = new ButtonType("Apply", ButtonData.APPLY);
dialog.getDialogPane().getButtonTypes().addAll(buttonOk,buttonCancel,buttonApply);
//UI
final GridPane gridPane = new GridPane();
gridPane.setHgap(6);
gridPane.setVgap(6);
gridPane.setPadding(new Insets(6));
TextField size = new TextField();
ColorPicker colorPicker = new ColorPicker();
TextField rotate = new TextField();
size.setText(null);
rotate.setText(null);
gridPane.add(new Label("Size :"), 0, 0);
gridPane.add(size, 1, 0);
gridPane.add(new Label("Color :"), 0, 1);
gridPane.add(colorPicker, 1, 1);
gridPane.add(new Label("Rotate :"), 0, 2);
gridPane.add(rotate, 1, 2);
dialog.getDialogPane().setContent(gridPane);
dialog.setResultConverter(dialogButton -> {
if (dialogButton == buttonApply) {
ArrayList<String> result = new ArrayList<String>();
result.add(size.getText());
result.add(colorPicker.getValue().toString());
result.add(rotate.getText());
return result;
}
if(dialogButton == buttonCancel) {
return new ArrayList<String>();
}
return null;
});
Я пробую это с помощью документации, но всегда на моей кнопке pointerNull:
//Création de la boite de dialogue
this.dialog = new Dialog();
dialog.setTitle("Edition des propriétés");
dialog.setHeaderText("Veuillez entrer les valeurs que vous désirez");
ButtonType buttonOk = new ButtonType("Ok",ButtonData.OK_DONE);
ButtonType buttonCancel = new ButtonType("Annuler", ButtonData.CANCEL_CLOSE);
ButtonType buttonApply = new ButtonType("Appliquer", ButtonData.APPLY);
dialog.getDialogPane().getButtonTypes().addAll(buttonOk,buttonCancel,buttonApply);
final Button btApply = (Button) dialog.getDialogPane().lookupButton(ButtonType.APPLY);
btApply.addEventFilter(ActionEvent.ACTION, event -> {
event.consume();
});