Java 向列添加数据的简单方法

Java 向列添加数据的简单方法,java,javafx,tableview,Java,Javafx,Tableview,我想在JavaFXTableView中的列中插入两个独立的数据集。基本上我有两个带字符串的LinkedList,我想把一个列表放在一列,另一个放在第二列 最简单的方法是什么?还是另一个JavaFX元素更适合这个 到目前为止,我找到的唯一解决方案都是基于插入行中的集合,这不是我想要做的。我找到了一个JavaFX教程,它似乎有一些解决方案,用于获取集合和基于集合填充列,以及在以后集合更改时自动更新表,使用观察者 他们的代码有一个具有两个属性的对象列表,您可能希望修改他们的代码以从两个单独的列表中进

我想在JavaFXTableView中的列中插入两个独立的数据集。基本上我有两个带字符串的LinkedList,我想把一个列表放在一列,另一个放在第二列

最简单的方法是什么?还是另一个JavaFX元素更适合这个


到目前为止,我找到的唯一解决方案都是基于插入行中的集合,这不是我想要做的。

我找到了一个JavaFX教程,它似乎有一些解决方案,用于获取集合和基于集合填充列,以及在以后集合更改时自动更新表,使用观察者


他们的代码有一个具有两个属性的对象列表,您可能希望修改他们的代码以从两个单独的列表中进行绘制,而不是为单独的列访问他们对象的两个变量。

我强烈建议重新组织您的数据,以便您拥有一个具有两个属性的类,其中一个是第一个列表中的元素,另一个是第二个列表中的对应元素。然后,您可以列出该类的对象,并简化为通常的情况

假设你有

// your first list:
List<Integer> intList = ... ;
// your second list:
List<String> stringList = ... ;
现在你可以做了

TableView<MyDataType> table = new TableView<>();
for (int i = 0; i < intList.size() && i < stringList.size(); i++) {
    table.getItems().add(new MyDataType(intList.get(i), stringList.get(i)));
}

这不是在重复这个问题吗?我不相信这是因为他们说他们只找到了将数据填充到行而不是列中的解决方案。这将是一个将其填充到列中的解决方案。您的链接正是OP在他们找到的解决方案中描述的情况,带有一个对象列表,每个对象代表一行。你的回答只是“这是你找到的解决方案的一个例子,根据你的用例修改它。”这似乎是对“我如何为这个用例修改这些类型的解决方案?”的重述。在发布问题之前,我已经访问了链接。在那个里,他们有一个数据类型,他们作为一个整体插入到表中。我有不同长度的单独列表。问题是,列表的大小不同,我需要列来包含整个列表,因此一列将比另一列长。当然,您可以修改这种情况下的代码吗?我现在有一个会议,但如果你真的无法理解,我会在回来后更新…对不起,我的不好,我不太擅长Java中的Lambda表达式,但已经得到了它。THX寻求帮助,将您的答案标记为解决方案。如果不在某个点创建1000个对象,则很难看到如何表示包含1000个对象的列表。为什么这会是一个坏习惯?@PoundingDev我知道你发布这篇文章已经一年了,但以防万一你还没有发现:现在创建对象比以前便宜多了。
TableView<MyDataType> table = new TableView<>();
for (int i = 0; i < intList.size() && i < stringList.size(); i++) {
    table.getItems().add(new MyDataType(intList.get(i), stringList.get(i)));
}
import java.util.Arrays;
import java.util.List;

import javafx.application.Application;
import javafx.beans.property.ReadOnlyIntegerWrapper;
import javafx.beans.property.ReadOnlyStringWrapper;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class TableViewByColumns extends Application {

    @Override
    public void start(Stage primaryStage) {
        List<Integer> intValues = Arrays.asList(1, 2, 3, 4, 5);
        List<String> stringValues = Arrays.asList("One", "Two", "Three", "Four", "Five");

        TableView<Integer> table = new TableView<>();
        for (int i = 0; i < intValues.size() && i < stringValues.size(); i++) {
            table.getItems().add(i);
        }

        TableColumn<Integer, Number> intColumn = new TableColumn<>("Value");
        intColumn.setCellValueFactory(cellData -> {
            Integer rowIndex = cellData.getValue();
            return new ReadOnlyIntegerWrapper(intValues.get(rowIndex));
        });

        TableColumn<Integer, String> nameColumn = new TableColumn<>("Name");
        nameColumn.setCellValueFactory(cellData -> {
            Integer rowIndex = cellData.getValue();
            return new ReadOnlyStringWrapper(stringValues.get(rowIndex));
        });

        table.getColumns().add(intColumn);
        table.getColumns().add(nameColumn);

        primaryStage.setScene(new Scene(new BorderPane(table), 600, 600));
        primaryStage.show();
    }

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