首页 > 解决方案 > 如何使用二维数组中的数据填充 TableView?

问题描述

我有一个details在类中调用的数组Table。我希望TableView用数组中的内容填充 。但是,我不确定它是如何完成的。我尝试寻找类似的问题,但找不到解决方案。抱歉,如果问题已经回答。该类Table如下(注意,import为简单起见,我删除了这些语句)。

public class Table extends Application
{
    private static String details[][] = new String[2][2] ;

    public static void main(String[] args) 
    {
        initialize() ;

        Application.launch(args) ;
    }

    private static void initialize()
    {
        details[0][0] = "Peter" ;
        details[0][1] = "Jones" ;

        details[1][0] = "Marcus" ;
        details[1][1] = "Anthony" ;
    }

    @Override
    public void start(Stage window)
    {
        TableView<Person> table = new TableView<Person>() ;

        TableColumn<Person, String> firstNameColumn = new TableColumn<>("First Name") ;
        firstNameColumn.setCellValueFactory(new PropertyValueFactory<>("firstName")) ;
        firstNameColumn.setPrefWidth(200) ;

        TableColumn<Person, String> lastNameColumn = new TableColumn<>("Last Name") ;
        lastNameColumn.setCellValueFactory(new PropertyValueFactory<>("lastName")) ;
        lastNameColumn.setPrefWidth(200) ;

        table.getColumns().addAll(firstNameColumn, lastNameColumn) ;
        
        /* Not so sure to what goes in here */

        VBox vbox = new VBox(table) ;
        vbox.setPadding(new Insets(10)) ;
        vbox.setAlignment(Pos.CENTER) ;

        Scene scene = new Scene(vbox, 425, 300) ;

        window.setScene(scene) ;
        window.show() ;
    }

    private ObservableList<Person> loadData(int index)
    {
        ObservableList<Person> data = FXCollections.observableArrayList() ;

        /* Not so sure to what goes in here */

        return data ;
    }
}

Person定义表中显示的对象的自定义类是:

public class Person
{
    private String firstName, lastName ;

    public TableContent(String firstName, String lastName)
    {
        this.firstName = firstName ;
        this.lastName = lastName ;
    }

    public String getFirstName()
    {
        return firstName ;
    }

    public String getLastName()
    {
        return lastName ;
    }
}

标签: javaarraysjavafxmultidimensional-arraytableview

解决方案


您需要创建 Person 对象的 ArrayList,然后您可以执行以下操作:

ObservableList<Person> data = FXCollections.observableArrayList(personArrayList);

然后你有一个带有你的 Person 对象的 ObservableList 并且可以像这样将数据设置到表中:

table.setItems(data);

数据是 ObservableList。


推荐阅读