如何在Javafx中使用Arraylist填充tablecolumn

如何在Javafx中使用Arraylist填充tablecolumn,java,javafx,Java,Javafx,我试图用字符串ArrayList填充表列。通常我知道如何用对象属性填充它,但在我的例子中,我只需要用ArrayList中的字符串填充它。 我怎么做 通过我得到的答案,它似乎不起作用:( 示例如下: List<Double> doubles = new ArrayList<Double>(); doubles.add(12.12d); ObservableList<Double> names = FXCollections.observableArrayList

我试图用字符串ArrayList填充表列。通常我知道如何用对象属性填充它,但在我的例子中,我只需要用ArrayList中的字符串填充它。 我怎么做

通过我得到的答案,它似乎不起作用:(

示例如下:

List<Double> doubles = new ArrayList<Double>();
doubles.add(12.12d);
ObservableList<Double> names = FXCollections.observableArrayList(doubles);
ListView<Double> listView = new ListView<Double>(names);
List doubles=new ArrayList();
双倍加(12.12d);
ObservableList name=FXCollections.observableArrayList(双倍);
ListView ListView=新的ListView(名称);

这是可能的,但可能不是最好的主意。表设计用于一类数据。单列表只是一个列表

import java.util.ArrayList;
import java.util.Arrays;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class TableTest extends Application {
    public static void main(String[] args) { launch(args); }

    @Override
    public void start(Stage stage) {
        TableView<String> tv = new TableView(FXCollections.observableArrayList(
                new ArrayList<String>(Arrays.asList(new String[]{
                    "a","bb","ccc","dddd","eeeee"
                }))));
        TableColumn<String, String> tc = new TableColumn<>("string");
        tc.setCellValueFactory((p) -> {
            return new ReadOnlyStringWrapper(p.getValue());
        });
        tv.getColumns().add(tc);
        stage.setScene(new Scene(tv));
        stage.show();
    }

}
import java.util.ArrayList;
导入java.util.array;
导入javafx.application.application;
导入javafx.beans.property.ReadOnlyStringWrapper;
导入javafx.collections.FXCollections;
导入javafx.scene.scene;
导入javafx.scene.control.TableColumn;
导入javafx.scene.control.TableView;
导入javafx.stage.stage;
公共类TableTest扩展了应用程序{
公共静态void main(字符串[]args){launch(args);}
@凌驾
公众假期开始(阶段){
TableView tv=新的TableView(FXCollections.observableArrayList(
新建ArrayList(Arrays.asList)(新字符串[]){
“a”、“bb”、“ccc”、“dddd”、“EEE”
}))));
TableColumn tc=新的TableColumn(“字符串”);
tc.setCellValueFactory((p)->{
返回新的ReadOnlyStringWrapper(p.getValue());
});
tv.getColumns().add(tc);
舞台布景(新场景(电视));
stage.show();
}
}

但我需要将arraylist添加到tableColumn中,而不是listview中。有没有办法做到这一点,或者我需要使用listview来代替?但是,当我尝试用不同的arraylist填充两个表列时,我会得到两个表列的相同数据。我想不出任何方法。你必须先以某种方式将它们合并到行中表是一个类的二维表示,每个实例有一行。
import java.util.ArrayList;
import java.util.Arrays;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.collections.FXCollections;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class TableTest extends Application {
    public static void main(String[] args) { launch(args); }

    @Override
    public void start(Stage stage) {
        TableView<String> tv = new TableView(FXCollections.observableArrayList(
                new ArrayList<String>(Arrays.asList(new String[]{
                    "a","bb","ccc","dddd","eeeee"
                }))));
        TableColumn<String, String> tc = new TableColumn<>("string");
        tc.setCellValueFactory((p) -> {
            return new ReadOnlyStringWrapper(p.getValue());
        });
        tv.getColumns().add(tc);
        stage.setScene(new Scene(tv));
        stage.show();
    }

}