I некоторые данные отображаются с помощью Dialog
, вот класс данных:
public class Data
{
private StringProperty title;
private ObjectProperty<LocalDate> date;
Data(String title, LocalDate date)
{
this.title = title;
this.date = date;
}
public String getTitle() {return titleProperty.get();}
public void setTitle(String value) {titleProperty.set(value)}
public StringProperty titleProperty() {return title}
public LocalDate getDate() {return dateProperty.get();}
public void setDate(LocalDate value) {dateProperty.set(value)}
public ObjectProperty<LocalDate> dateProperty() {return date}
}
А вот Dialog
:
public class CustomDialog extends Dialog<void>
{
private ArrayList<Data> list = new ArrayList<>();
private VBox listDisplay = new VBox();
CustomDialog()
{
this.getDialogPane().getButtonTypes().add(ButtonType.OK);
if(!list.isEmpty())
{
this.getDialogPane.setContent(listDisplay);
for(Data data : list)
{
VBox listItem = new Vbox();
listItem.getChildren().add(new Label("Title : " + data.getTitle());
listItem.getChildren().add(new Label("Date : " + data.getDate());
listItem.getChildren().add(new Separator());
listDisplay.getChildren().add(listItem);
}
} else {
this.getDialogPane.setContent(new Label("no data");
}
}
}
Для целей тестирования яжестко закодированные поддельные данные в список, но после этого этот список будет удален и передан конструктором.
Теперь мне нужно включить кнопку в этом диалоге, которая при нажатии будет сохранять первый диалог активным,откройте новый диалог, который позволит пользователю вводить новые данные.Таким образом, этот новый диалог будет содержать textField, DatePicker и кнопку отправки.После отправки новые данные добавляются в список и отображаются в первом диалоге.
Проблема в том, что я не знаю, как создать эту пользовательскую кнопку.Нужно ли создавать пользовательский ButtonType
и добавлять его в диалог так же, как я это сделал?Если да, то какой способ создания пользовательского типа ButtonType является правильным?
Или мне нужно переопределить один из createButtonBar()
, createButton()
и createDetailsButton()
из DialogPane
?
Я не совсем понимаю, как JavaFX обрабатывает диалоги, и не могу понять, какой правильный способ открыть новый диалог из существующего диалога.