Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин Страница 37
Графические интерфейсы пользователя Java - Тимур Сергеевич Машнин читать онлайн бесплатно
Если размеры дерева не вмещают его содержимое, автоматически появляется полоса прокрутки.
Размеры дерева устанавливаются методом setPrefSize.
И рамку дерева можно стилизовать с помощью CSS свойства -fx-border.
В документации сказано, что узел TreeItem создается не обязательно на основе строки, а на основе объекта, который будет сохранен как значение этого узла.
Однако в дереве отображается строковое представление этого объекта, полученное методом toString.
Поэтому если создается дерево объектов, класс этих объектов должен иметь переопределенный метод toString.
Свойство selectionModel класса TreeView дает возможность определить множественность выбора и обработку события выбора узла дерева.
Возможность выбора нескольких узлов устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Также для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор узлов дерева пользователем.
Свойство cellFactory класса TreeView позволяет заполнить дерево TreeView пользовательскими компонентами TreeCell.
Компонент TreeCell отвечает за отображение узла дерева TreeView.
Класс TreeCell имеет стандартные реализации CheckBoxTreeCell, ChoiceBoxTreeCell, ComboBoxTreeCell, TextFieldTreeCell.
Свойство editable класса TreeView определяет редактируемость дерева.
По умолчанию это свойство имеет значение false.
В этом примере мы создаем редактируемое дерево, передавая в метод setCellFactory ячейку с текстовым полем TextFieldTreeCell.
Свойства onEditCancel, onEditCommit и onEditStart дерева обеспечивают обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания дерева со своими, пользовательскими редактируемыми ячейками, необходимо создать класс, расширяющий класс TableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами дерево с помощью свойства cellFactory.
TreeTableView
Компонент TreeTableView представляет собой элемент управления, который отображает неограниченную иерархию данных, представленную в столбцах.
Компонент TreeTableView имеет много общего с элементами управления TreeView и TableView, он объединяет и расширяет некоторые аспекты их функциональности.
Для создания компонента TreeTableView, сначала, как и для таблицы, создается модель данных.
Затем на основе модели данных создается список данных, который будет представлять строки таблицы.
Далее создается корневой узел дерева, и в него добавляются дочерние узлы, которые создаются в том числе и на основе списка данных.
Далее создаются столбцы таблицы с помощью конструктора, в котором можно указать заголовок столбца.
С помощью свойства cellValueFactory класса TreeTableColumn, ячейки столбца таблицы заполняются данными.
При этом свойство cellValueFactory связывает конкретный столбец TreeTableColumnс конкретным полем класса модели данных.
Такое связывание выполняется методом setCellValueFactory с помощью экземпляра класса TreeItemPropertyValueFactory, в конструкторе которого указывается класс модели данных и тип данных ячейки столбца, а также указывается имя поля класса модели данных, с которым нужно связать столбец.
После создания столбцов, создается компонент TreeTableView с помощью конструктора, в котором можно сразу указать корневой узел.
Или же его можно установить позже методом setRoot.
Столбцы добавляются в компонент TreeTableView методом getColumns.setAll.
Как и для таблицы, с помощью метода setTableMenuButtonVisible (true) можно установить контекстное меню, позволяющее регулировать отображение столбцов таблицы.
В этом случае появляется кнопка, открывающая меню, в котором можно выбрать столбцы для их отображения.
С помощью CSS свойства -fx-font можно установить шрифт для компонента TreeTableView.
Размеры компонента TreeTableView устанавливаются методом setPrefSize.
Если ширина и высота компонента TreeTableView недостаточны, чтобы вместить содержимое, появляются полосы прокрутки.
Если ширина и высота избыточны, в таблице отображаются пустые строки и столбцы.
Методом setCursor можно установить курсор для компонента, а методом setTooltip можно установить всплывающую подсказку для компонента.
Столбец TreeTableColumn может содержать набор ObservableList вложенных столбцов, заполнить который можно с помощью метода getColumns.addAll класса TreeTableColumn.
Метод setPlaceholder дает возможность установить узел Node, отображаемый в случае отсутствия данных.
Эта ситуация возникает, если не определить корневой узел для компонента TreeTableView.
Возможность выбора нескольких строк устанавливается методом setSelectionMode с константой MULTIPLE для модели выбора SelectionModel.
Для свойств selectedIndexProperty и selectedItemProperty модели выбора можно установить слушателя, который будет обрабатывать выбор строк таблицы пользователем.
Как и для таблицы, для компонента TreeTableView, данные в столбцах можно сортировать.
Чтобы запретить сортировку данных, нужно вызвать метод setSortable (false) для столбца.
Свойство editable классов TreeTableColumn и TreeTableView определяет редактируемость столбца и таблицы.
По умолчанию это свойство имеет значение false.
Свойство cellFactory класса TreeTableColumn дает возможность наполнить столбец пользовательскими компонентами, представленными классом TreeTableCell, с помощью метода setCellFactory.
У класса TreeTableCell есть стандартные реализации CheckBoxTreeTableCell, ChoiceBoxTreeTableCell, ComboBoxTreeTableCell, ProgressBarTreeTableCell, и TextFieldTreeTableCell.
В этом примере мы передаем в метод setCellFactory ячейку с текстовым полем TextFieldTreeTableCell.
Свойства onEditCancel, onEditCommit и onEditStart обеспечивают обработку событий редактирования.
Здесь мы используем метод setOnEditCommit, который устанавливает обработчик события завершения редактирования, когда пользователь нажимает клавишу Enter.
Для создания столбца со своими, пользовательскими редактируемыми элементами, необходимо создать класс, расширяющий класс TreeTableCell, в котором переопределяются методы startEdit, cancelEdit, commitEdit и updateItem с использованием редактируемых текстовых полей, и наполнить его экземплярами столбец с помощью свойства cellFactory.
ComboBox
Комбинированное поле ComboBox позволяет пользователю выбрать одну из нескольких опций.
Когда количество отображаемых элементов превышает некоторый предел, в раскрывающийся список компонента ComboBox добавляется прокрутка.
Это регулируется свойством visibleRowCount.
Этим ComboBox отличается от компонента ChoiceBox.
Кроме того, у компонента ComboBox есть такие свойства как cellFactory, placeholder, editable, и promptText.
Список выбора ComboBox создается с помощью конструктора, в котором сразу можно указать список элементов выбора.
Набор элементов ObservableList списка ComboBox может быть создан с помощью класса FXCollections.
Другим способом, методом getItems можно получить список ObservableList и добавить в него элементы методом add.
За выбор элементов списка отвечает модель SelectionModel, которая имеет свойства selectedIndex и selectedItem.
К этим свойствам можно присоединить слушателя и обрабатывать выбор пользователя.
Чтобы в списке отображался, например, первый элемент, для модели нужно вызвать метод selectFirst.
Также, как и для списка ChoiceBox, для списка ComboBox нельзя установить множественный выбор элементов списка пользователем.
Методом setValue можно установить отображаемый полем элемент, даже, если его нет в списке.
Методом setVisibleRowCount ограничивается количество отображаемых элементов в выпадающем списке.
Метод setPlaceholder позволяет определить узел, отображаемый в случае отсутствия списка элементов выбора.
Методом setEditable (true) можно сделать поле ComboBox редактируемым.
Метод setPromptText позволяет установить подсказку в редактируемое поле.
Правда при этом нужно убрать с поля фокус.
Обработчик редактирования поля можно установить методом setOnAction, который будет срабатывать при нажатии пользователем клавиши Enter.
В этом обработчике можно добавлять элементы в список, либо менять значения уже существующих элементов списка выбора.
Свойство cellFactory класса ComboBox позволяет заполнить выпадающий список пользовательскими компонентами ListCell.
Класс ListCell представляет отображаемый элемент списка ComboBox.
Изменить свойство cellFactory можно методом setCellFactory, в который можно передать стандартную реализацию ListCell – это CheckBoxListCell, ChoiceBoxListCell, ComboBoxListCell,
Жалоба
Напишите нам, и мы в срочном порядке примем меры.