Как заполнить tableview в javafx?

Пользователь

от stanford_mosciski , в категории: Java , 2 года назад

Как заполнить tableview в javafx?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от ally , 2 года назад

@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.


Пользователь

от vladimir , год назад

@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, а также используя различные типы ячеек для разных столбцов.