Шрифт:
Интервал:
Закладка:
Класс ListCell представляет отображаемый элемент списка ListView.
Изменить свойство cellFactory можно методом setCellFactory, в который можно передать ListCell реализацию CheckBoxListCell, ChoiceBoxListCell, ComboBoxListCell, или TextFieldListCell.
Или же можно создать свой компонент ListCell и вернуть его в переопределенном методе call интерфейса, который служит аргументом метода setCellFactory.
Свойство selectionModel класса ListView дает возможность определить множественность выбора и обработку события выбора элемента списка.
Множественность выбора элементов списка устанавливается методом setSelectionMode.
Обработка выбора элемента списка пользователем обрабатывается с помощью присоединения слушателя свойства selectedItemProperty модели выбора SelectionModel.
Чтобы сделать список редактируемым, во-первых, нужно вызвать метод setEditable (true) для списка.
А во-вторых, нужно для списка определить редактируемую ячейку, например, ячейку с текстовым полем TextFieldListCell.
Таблица TableView
Компонент TableView представляет таблицу элементов.
Таблица TableView состоит из набора ObservableList столбцов TableColumn, пополнить который можно с помощью метода getColumns.addAll класса TableView.
С помощью свойства items класса TableView набор ObservableList столбцов TableColumn таблицы связывается с набором ObservableList данных для строк таблицы.
Таким образом, у нас есть два списка.
Один список – это список столбцов таблицы.
И второй список – это список объектов, представляющих строки таблицы.
Чтобы создать список объектов, представляющих строки таблицы, нам нужно создать модель данных.
Модель данных – это JavaFX Bean класс, то есть Java класс, использующий JavaFX свойства.
Каждое JavaFX свойство модели данных предназначено представлять столбец таблицы.
Таким образом, экземпляр класса модели данных будет представлять строку таблицы.
После создания модели данных, мы создаем список ObservableList данных для строк таблицы, то есть список экземпляров класса модели данных, используя класс FXCollections.
Далее мы создаем столбцы таблицы.
Столбцы таблицы TableView представляет класс TableColumn, экземпляр которого создается с помощью конструктора, в котором можно указать заголовок столбца.
С помощью свойства cellValueFactory класса TableColumn, ячейки столбца таблицы заполняются данными.
То есть свойство cellValueFactory связывает конкретный столбец TableColumn с конкретным полем класса модели данных.
Такое связывание выполняется методом setCellValueFactory с помощью экземпляра класса PropertyValueFactory, в конструкторе которого указывается класс модели данных и тип данных ячейки столбца, а также указывается имя поля класса модели данных, с которым нужно связать столбец.
Под капотом, это работает как определение метода call интерфейса Callback, в котором возвращается соответствующее поле класса модели данных.
Метод setCellValueFactory возвращает JavaFX свойство, значением которого заполняется ячейка таблицы.
Кроме того, к этому значению автоматически добавится наблюдатель, так что любые изменения, которые будут произведены, будут наблюдаться таблицей TableView, в результате чего ячейка таблицы будет немедленно обновляться.
После создания столбцов, создается таблица TableView с помощью конструктора, в котором можно сразу указать список ObservableList данных для строк таблицы.
Или же его можно установить позже методом setItems.
Столбцы добавляются в таблицу методом getColumns.addAll.
Если уже после создания таблицы к списку ObservableList данных для строк таблицы добавить новый элемент, таблица TableView автоматически обновится и отобразит новую строку.
Свойство tableMenuButtonVisible обеспечивает опцию контекстного меню, позволяющего регулировать отображение столбцов таблицы.
Это свойство определяется методом setTableMenuButtonVisible (true).
В этом случае появляется кнопка, открывающая меню, в котором можно выбрать столбцы для их отображения.
С помощью CSS свойства -fx-font можно установить шрифт для таблицы.
Размеры таблицы устанавливаются методом setPrefSize.
Если ширина и высота таблицы недостаточны, чтобы вместить содержимое таблицы, для таблицы появляются полосы прокрутки.
Если ширина и высота таблицы избыточны, в таблице отображаются пустые строки и столбцы.
Методом setCursor можно установить курсор для таблицы, а методом setTooltip можно установить всплывающую подсказку для таблицы.
Столбец TableColumn может содержать набор ObservableList вложенных столбцов, заполнить который можно с помощью метода getColumns.addAll класса TableColumn.
Свойство placeholder дает возможность установить узел Node, отображаемый в случае отсутствия данных таблицы.
Для этого используется метод setPlaceholder таблицы.
Свойство selectionModel дает возможность определить выделенные элементы таблицы и установить множественность выбора.
Возможность выбора нескольких строк устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Также для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор строк таблицы пользователем.
По умолчанию, данные в столбцах можно сортировать.
Пользователь может изменять порядок данных, щелкая мышью заголовки столбцов.
Первый щелчок сортирует данные столбца по возрастанию, второй щелчок сортирует данные столбца по убыванию, а третий клик отключает сортировку.
Пользователь может сортировать несколько столбцов в таблице и определять приоритет каждого столбца в операции сортировки.
Чтобы отсортировать несколько столбцов, пользователь нажимает клавишу Shift, щелкая по заголовку каждого столбца для сортировки.
Программным способ отсортировать столбцы таблицы можно, установив список sortOrder, который определяет порядок сортировки столбцов.
При этом можно установить порядок сортировки для каждого столбца списка.
Чтобы запретить сортировку данных, нужно вызвать метод setSortable (false) для столбца.
Свойство editable классов TableColumn и TableView определяет редактируемость столбца и таблицы.
По умолчанию это свойство имеет значение false.
Свойство cellFactory класса TableColumn дает возможность наполнить столбец пользовательскими компонентами, представленными классом TableCell, с помощью метода setCellFactory.
У класса TableCell есть стандартные реализации CheckBoxTableCell, ChoiceBoxTableCell, ComboBoxTableCell, ProgressBarTableCell, TextFieldTableCell.
В этом примере мы передаем в метод setCellFactory ячейку с текстовым полем TextFieldTableCell.
Свойства onEditCancel, onEditCommit и onEditStart обеспечат обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания столбца со своими, пользовательскими редактируемыми элементами, необходимо создать класс, расширяющий класс TableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами столбец с помощью свойства cellFactory.
Дерево TreeView
Компонент TreeView представляет прокручивающееся отображение дерева элементов.
Дерево TreeView создается на основе корневого узла, который определяется свойством root и представлен классом TreeItem.
То есть сначала мы создаем корневой узел дерева TreeItem, добавляем в него дочерние узлы.
А затем создаем дерево TreeView с помощью конструктора, в котором можем сразу указать корневой узел, или установить корневой узел для дерева с помощью метода setRoot.
Узлы TreeItem создаются с помощью конструктора, в котором можно указать строковое отображение узла дерева и значок узла дерева.
Метод getChildren.addAll класса TreeItem позволяет добавить в узел TreeItem набор дочерних узлов.
Если узел не содержит дочерних элементов, он называется листом.
Метод setExpanded (true) узла программным способом раскрывает данный узел, отображая его дочерние
- C# для профессионалов. Том II - Симон Робинсон - Программирование
- Как спроектировать современный сайт - Чои Вин - Программирование
- Microsoft Visual C++ и MFC. Программирование для Windows 95 и Windows NT. Часть 2 - Александр Фролов - Программирование
- Программирование на Java - Н.А. Вязовик - Программирование
- ИНФОРМАЦИОННАЯ ТЕХНОЛОГИЯ. РУКОВОДСТВО ПО УПРАВЛЕНИЮ ДОКУМЕНТИРОВАНИЕМ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ - ГОССТАНДАРТ РОССИИ - Программирование
- Каждому проекту своя методология - Алистэр Коуберн - Программирование
- Сделай видеоигру один и не свихнись - Слава Грис - Программирование / Руководства
- Как почистить сканы книг и сделать книгу - IvanStorogev? KpNemo - Программирование