У меня есть небольшая проблема с моим материалом JavaFX. Я уверен, что вы знаете, что можете получить данные от TextInputDialog
с Optional<String>
и .showAndWait()
. Но что мне делать, когда у меня есть настраиваемый диалог с несколькими TextFields
и ChoiceBox
? Как получить результаты от всех из них при нажатии кнопки «ОК»? Я думал о List<String>
, но я не успел это сделать .. код (пользовательский диалог):Получить несколько результатов из пользовательского диалога [JavaFX]
public class ImageEffectInputDialog extends Dialog {
private ButtonType apply = new ButtonType("Apply", ButtonBar.ButtonData.OK_DONE);
private ButtonType cancel = new ButtonType("Cancel", ButtonBar.ButtonData.CANCEL_CLOSE);
public ImageEffectInputDialog(String title) {
setTitle(title);
setHeaderText(null);
GridPane dPane = new GridPane();
Label offsetX = new Label("Offset X: ");
Label offsetY = new Label("Offset Y: ");
Label color = new Label("Shadow Color: ");
TextField offsetXText = new TextField();
TextField offsetYText = new TextField();
ChoiceBox<String> shadowColors = new ChoiceBox<>();
shadowColors.getItems().add(0, "Black");
shadowColors.getItems().add(1, "White");
dPane.setHgap(7D);
dPane.setVgap(8D);
GridPane.setConstraints(offsetX, 0, 0);
GridPane.setConstraints(offsetY, 0, 1);
GridPane.setConstraints(offsetXText, 1, 0);
GridPane.setConstraints(offsetYText, 1, 1);
GridPane.setConstraints(color, 0, 2);
GridPane.setConstraints(shadowColors, 1, 2);
dPane.getChildren().addAll(offsetX, offsetY, color, offsetXText, offsetYText, shadowColors);
getDialogPane().getButtonTypes().addAll(apply, cancel);
getDialogPane().setContent(dPane);
}
}
код (где я хочу, чтобы результаты)
if(scrollPane.getContent() != null && scrollPane.getContent() instanceof ImageView) {
// ImageEffectUtil.addDropShadow((ImageView) scrollPane.getContent());
ImageEffectInputDialog drop = new ImageEffectInputDialog("Drop Shadow");
//Want the Results here..
}
Я надеюсь, что кто-то может помогите мне :)
Хорошо, что действительно полезно: DI никогда бы не придумал эту идею, thx. Думаю, я справился сам, потому что он работает. Но я только хочу это понять. Я имею в виду, что самосозданный DataType 'Result' является логичным, но что именно' setResultConverter() 'точно? Я не тот, кто копирует вещь и не понимает ее, я ХОЧУ понять ее :) – xkev320x
Я бы предложил сначала прочитать javadoc, независимо от вопроса - https://docs.oracle.com/javase/8/javafx /api/javafx/scene/control/Dialog.html. Короче говоря, он принимает естественный результат окончания диалога, который является типом кнопки, потому что вы закрываете диалог, нажимая одну из кнопок. Поскольку вам нужен пользовательский тип данных, т. Е. Результат, JavaFX должен знать, как преобразовать результат типа кнопки в ваш пользовательский результат. Следовательно, setResultConverter(). – AlmasB
Извините, я не читал причины JavaDocs, я понял все вещи JavaFX, которые я делал до сих пор. Я знаю, что это немного глупо, но да: D В любом случае спасибо за вашу помощь :) – xkev320x