@stanford_mosciski
В JavaFX вы можете заполнить TableView
с помощью связывания данных. Для этого вам нужно создать класс-модель данных, унаследованный от javafx.beans.property.SimpleObjectProperty
, который будет содержать нужные вам данные.
Затем вы создаете список этих объектов модели и устанавливаете его в качестве источника данных для TableView
с помощью метода setItems
.
Наконец, вы должны установить столбцы таблицы и указать, какие поля из объекта модели данных следует отображать в каждом столбце. Для этого вам нужно создать экземпляры TableColumn
и установить фабрику ячеек, которая будет генерировать ячейки на основе данных из модели.
Вот пример кода, который демонстрирует, как это может быть сделано:
1 2 3 4 5 |
import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.TableColumn; import javafx.scene.control. |
@stanford_mosciski
TableView; import javafx.scene.control.cell.PropertyValueFactory;
public class TableViewExample extends Application {
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
private final ObservableList<Person> data = FXCollections.observableArrayList( new Person("John", "Doe"), new Person("Jane", "Smith"), new Person("Bob", "Johnson") ); public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) { TableView<Person> table = new TableView<>(); table.setItems(data); TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name"); firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName")); TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name"); lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName")); table.getColumns().addAll(firstNameCol, lastNameCol); primaryStage.setScene(new Scene(table, 300, 200)); primaryStage.show(); } public static class Person { private final SimpleStringProperty firstName; private final SimpleStringProperty lastName; public Person(String firstName, String lastName) { this.firstName = new SimpleStringProperty(firstName); this.lastName = new SimpleStringProperty(lastName); } public String getFirstName() { return firstName.get(); } public void setFirstName(String firstName) { this.firstName.set(firstName); } public StringProperty firstNameProperty() { return firstName; } public String getLastName() { return lastName.get(); } public void setLastName(String lastName) { this.lastName.set(lastName); } public StringProperty lastNameProperty() { return lastName; } } |
}
В этом примере мы создаем класс Person, который содержит два поля - firstName и lastName. Затем мы создаем TableView и устанавливаем список объектов Person в качестве источника данных. Затем мы создаем два TableColumn, один для firstName и один для lastName, и устанавливаем значения свойств ячеек каждого столбца. Наконец, мы добавляем столбцы в TableView и отображаем их на сцене.
Это минимальный пример для заполнения TableView в JavaFX. Вы можете расширить его, добавив дополнительные столбцы или свойства в класс Person, а также используя различные типы ячеек для разных столбцов.