Создание разных моделей таблицы JavaFX

431
30 марта 2017, 19:20

Доброго времени суток, господа. Сильно не пинайте, если глупости спрошу, делаю такое первый раз, поиск не помог. Выполняю задание в университет, необходимо разработать GUI для моего проекта. Конкретно встала задача сделать отображение данных из трёх разных таблиц (Преподаватели, группы, нагрузка). Хотел добавить три разные TableView и по нажатию на соответствующий Menu в баре скрывать ненужные и отображать необходимую таблицу. Но где-то прочитал, что лучше сделать три разные модели таблицы и показывать необходимую. Но так и не смог понять, как сделать разные модели таблицы. SceneBuilder генерирует такой код:

<TableView layoutX="108.0" layoutY="99.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="35.0">
                <columns>
                  <TableColumn prefWidth="75.0" text="C1" />
                  <TableColumn prefWidth="75.0" text="C2" />
                </columns>
              </TableView>

Логически также не смог выяснить как тут создать три разные модели. В добавок к этому справа будут кнопки "Редактировать запись", "Удалить", "Добавить". Нужно ли для них тоже делать различные версии кода или можно задать какой-то параметр каждой таблице, который будет передаваться контроллеру и тот будет сохранять изменённый результат в необходимую таблицу? Буду премного благодарен, если откроете мне глаза, дадите совет или хотя бы направите по ссылке.

Answer 1

Scene Builder нужен для создания интерфейса, а вся логика должна быть описана в контроллере и модели.

Вот пример

@FXML
TableView table;

public void populateTable() {
    ObservableList<Record> records = getRecords();
    table.setItems(records);
    TableColumn<Record,String> firstCol = new TableColumn<Record,String>("First column");
    firstCol.setCellValueFactory(new PropertyValueFactory("col1"));
    TableColumn<Record,String> secondCol = new TableColumn<Record,String>("Second column");
    secondCol.setCellValueFactory(new PropertyValueFactory("col2"));
    table.getColumns().setAll(firstCol, secondCol);
}
READ ALSO
java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver

Привет, использую java 16, соответственно беру sqljdbc4

323
Java - Оптимизация кода

Java - Оптимизация кода

Можно как-то оптимизировать, метод изложенный нижеУ меня создаются картинки различного цвета с помощью генератора случайных чисел, всё работает...

202
Sqlite android не создаются таблицы

Sqlite android не создаются таблицы

При запуске приложение не создает таблицы в sqlite

408