Добавление элементов в табличное представление без использования экземпляра какого-либо класса - PullRequest
0 голосов
/ 17 декабря 2018

Я разрабатываю проект о каталогизации чего-либо.В этом проекте пользователь должен иметь возможность создавать свою собственную таблицу по своему желанию.Поэтому у меня нет никакого статического класса и экземпляра этого.

Я создаю панель diaglog и могу динамически создавать текстовые поля для пользовательских вводов в соответствии с именами столбцов таблицы базы данных, но как я могу добавить входные данные этих пользователей в tableView?

Как я могудобавить любые входные данные String в ListView, можно ли добавить пользовательские входные данные String в столбцы tableView?

ListView<String> listView = new ListView();
public ObservableList<String> listCatalogNames = FXCollections.observableArrayList();
listCatalogNames.add("Books");

Подробнее с примером;

Существует просмотр списка, который содержит все имена каталогов и в соответствии с lisviewВыбор таблицы просмотра будет создаваться динамически по центру пограничной панели.

У пользователя есть каталоги книг (имя, автор, страница) и фильмы (имя, год, режиссер, жанр).

Допустим, выбранные пользователем фильмы и табличное представление появились с 4 столбцами и нажали кнопку добавления.Панель Diaglog создана с 4 текстовыми полями.Я построил все до этого момента, но не могу добавить пользовательский ввод в tableView, потому что у меня нет статического класса для фильмов, книг и т. Д.

Есть ли способ создать динамический класс?

Пожалуйстадайте мне идею и помогите мне с этой ситуацией.

здесь является ссылкой github нашего проекта

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Просто используйте String[] для хранения String s для каждого столбца строки (или аналогичной структуры данных) в качестве типа элемента для TableView.Должно быть достаточно просто создать String[] из входных данных и добавить его к этому TableView:

static TableView<String[]> createTable(String... columnNames) {
    TableView<String[]> table = new TableView<>();

    for (int i = 0; i < columnNames.length; i++) {
        final int index = i;
        TableColumn<String[], String> column = new TableColumn<>(columnNames[i]);
        column.setCellValueFactory(cd -> new SimpleStringProperty(cd.getValue()[index]));
        table.getColumns().add(column);
    }

    return table;
}

Добавление String[] userInputs к TableView<String[]> table будет сделано следующим образом:

table.getItems().add(userInputs);

Подобную проблему (создание TableView на основе метаданных ResultSet) можно найти здесь: Как заполнить TableView данными базы данных

0 голосов
/ 17 декабря 2018

Самое простое решение, которое приходит мне в голову, - это использовать полиморфизм .Вы можете создать суперкласс Book и Movie, назовем его Item.Затем вы можете объявить, что ваша таблица содержит Item, и при необходимости привести ее к одному из конкретных классов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...