Создание динамического списка узлов, как мне получить к ним доступ позже? - PullRequest
0 голосов
/ 30 августа 2018

Это мой код:

for (int i=1; i<= columnCount; i++) {
    HBox h = new HBox();
    Label column = new Label(rsmd.getColumnName(i));
    TextField entry = new TextField();
    h.getChildren().addAll(column, entry);
    dialogVbox.getChildren().add(h);
}

Мне нужно запустить это в цикле for, потому что количество созданных строк зависит от столбцов, извлеченных из таблицы базы данных. После этого, когда пользователь нажимает кнопку, мне нужно получить новые значения, которые они ввели в текстовые поля «entry». Есть какой-либо способ сделать это? Я предполагаю, что мне, возможно, придется создать некоторый динамический список вне цикла и заполнить его, но я не уверен, как это сделать. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 30 августа 2018

почему бы не использовать карту, заполненную непосредственно при действиях редактирования соответствующих TextField s:

Map<String, String> newValues = new HashMap<>();

for (int i=1; i<= columnCount; i++) {
    final String columnName = rsmd.getColumnName(i); 
    HBox h = new HBox();
    Label column = new Label(columnName);
    TextField entry = new TextField();
    entry.textProperty().addListener((e,o,n) -> newValues.put(columnName, n));
    h.getChildren().addAll(column, entry);
    dialogVbox.getChildren().add(h);
}

затем вставьте дБ

String columns = newValues.entrySet().stream().map( n -> n.getKey() ).collect( Collectors.joining( "," ) );
String values = newValues.entrySet().stream().map( n -> n.getValue() ).collect( Collectors.joining( "," ) );

String sql = "insert into table ( " + columns + ") values (" + values + ")";
// run sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...