gpt4 book ai didi

java - 如何在没有警告的情况下创建 JavaFX TableView?

转载 作者:行者123 更新时间:2023-11-29 08:25:19 25 4
gpt4 key购买 nike

我正在关注 tutorial by Oracle在 JavaFX 中创建 TableView。在此屏幕截图中,我复制并粘贴了代码,但出现了几个错误,这些错误在教程中没有提及。

enter image description here

TableView 上的警告显示:

TableView is a raw type. References to generic type TableView<​S> should be parameterized

TableColumn 上的警告显示:

TableColumn is a raw type. References to generic type TableColumn<​S,T> should be parameterized

addAll 方法上的警告显示:

Type safety: The method addAll(Object...) belongs to the raw type ObservableList. References to generic type ObservableList<​E> should be parameterized

我查看了文档,发现它们确实需要参数(这很令人困惑,因为教程没有提到这一点),但我不明白它们应该是什么。如果我这样做

TableView<String> table = new TableView<>();

TableColumn<String, String> tableCol = new TableColumn<>(...);

我仍然收到有关 addAll 方法的警告,其中显示:

Type safety: A generic array of TableColumn<​String,?> is created for a varargs parameter

我真的无法理解类型参数的预期。我知道我可以抑制警告,但这似乎是不好的做法。我该怎么办?

最佳答案

TableView 需要尝试在每一行中表示的数据对象。因此,根据您的示例,您正在尝试在表中显示人员列表。所以你的 tableView 引用类型将是 Person 类型。喜欢

TableView<Person> tableView = new TableView<>();

现在每一列代表您要显示的信息的数据类型。在你的情况下,所有都是字符串。但它可以根据您想要显示的数据而变化。

例如,考虑下面的 Person 对象。

public class Person{
private StringProperty firstName = new SimpleStringProperty();
private StringProperty lastName = new SimpleStringProperty();
private IntegerProperty age = new SimpleIntegerProperty();
private DoubleProperty weight = new SimpleDoubleProperty();
}

在上面的 person 对象中,如果您想表示每列中的数据,您的列声明将类似于..

TableColumn<Person, String> firstNameCol = new TableColumn<>("First Name");
TableColumn<Person, String> lastNameCol = new TableColumn<>("Last Name");
TableColumn<Person, Integer> ageCol = new TableColumn<>("Age");
TableColumn<Person, Double> weightCol = new TableColumn<>("Weight");

关于java - 如何在没有警告的情况下创建 JavaFX TableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53751455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com