Как выбрать несколько записей в tableview javafx

TableView

Класс javafx.scene.control.TableView<S>

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

Для создания TableView можно принять один из двух конструкторов класса:

  • TableView(): создает пустую таблицу
  • TableView​(ObservableList<S> items): создает таблицу, заполненную данными из коллекции items

Определение данных

Для начала нам надо определить данные, которые будут выводиться в таблице. Для этого создадим новый файл Person.java, в котором определим следующий класс Person

Основну класса Person составляют свойства name и age, которые имеют тип SimpleStringProperty и SimpleIntegerProperty соответственно. Фактически эти типы представляю надстройку над стандартными типами String и Integer. В целом пакет javafx.beans.property еще ряд типов, которые можно использовать для определения свойств в зависимости от типа данных, которые мы хотим сохранить:

  • SimpleBooleanProperty

  • SimpleIntegerProperty

  • SimpleDoubleProperty

  • SimpleFloatProperty

  • SimpleLongProperty

  • SimpleStringProperty

  • SimpleMapProperty<K, V>

  • SimpleListProperty<E>

  • SimpleSetProperty<E>

  • SimpleObjectProperty<T>

Каждый подобный тип определяет метод get(), который возвращает хранимые данные, и метод set(), которые устанавливает данные.

При этом методы доступа — геттеры и аксессоры определять необязательно.

Определение столбцов

Любая таблица представляет набор ячеек, которые образуют на пересечении строк и столбцов. Каждая строка в таблице отображает отдельный элемент из коллекции ObservableList, которая передается через конструктор в TableView. В нашем случае каждая отдельная строка будет представлять отдельные объкт класс Person.

Для определения столбцов в TableView применяется класс TableColumn<S, T>. Объект TableColumn типизируется двумя типами: параметр S представляе тот же тип, которым тизирован объект TableView (тип отображаемых в таблице данных), а параметр T передает тип данных в рамках данного столбца.

С помощью конструктора TableColumn можно определить заголовок столбца:

После определения столбца для него надо установить фабрику генерации значения с помощью метода setCellValueProperty(). Фабрика определяет, как ячейка будет получать значение.

В данном случае можно использовать встроенный класс javafx.scene.control.cell.PropertyValueFactory, который позволяет установить привязку столбца к определенному свойству данных с помощью конструктора:

После этого столбец надо добавить в коллекцию столбцов TableView.

Отобразим данные класса Person в таблице:

Скомпилируем оба класса (Person и Main) и запустим программу:

Получение выделенной строки

Для получения выделенных в TableView строк используется класс TableView.TableViewSelectionModel<S>. Для получения объекта этого класса у TableView вызывается метод getSelectionModel(). Например, выведем выделенный в таблице объект Person:

В данном случае информация о выделенной строке выводится в элементе Label. Для этого у TableView.TableViewSelectionModel вызывается метод selectedItemProperty(), который возвращает объект ReadOnlyObjectProperty и предоставляет доступ к выбранному в таблице элементу. Для прослушивания изменений выделенного элемента у ReadOnlyObjectProperty вызывается метод addListener(), который устанавливает слушателя изменений.

Слушатель представляет реализацию интерфейса ChangeListener. Интерфейс также типизируется типом Person — типом объектов в таблице. В методе changed этого интерфейса с помощью параметра newVal мы можем получить новый выбранный объект Person.

НазадСодержание

Источник

Поделиться:
Нет комментариев

Добавить комментарий

Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.

×
Вам будет интересно