JavaFX:无法将 TableView 的项目设置为其自身项目的 FilteredList
JavaFX: Can't set items of TableView to FilteredList of its own items
我正在尝试将 TableView
的项目设置为 FilteredList
自己的项目,但这样做时出现错误。
public class FilteredTableView<T> {
private TableView<?> tableView;
FilteredList<?> filteredData;
public <T> FilteredTableView(TableView<T> tableView) {
this.tableView = tableView;
this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
this.tableView.setItems(this.filteredData); // The method setItems(ObservableList<capture#4-of ?>) in the type TableView<capture#4-of ?> is not applicable for the arguments (FilteredList<capture#5-of ?>)
}
}
有没有一种方法可以解决这个问题,而不必为每个我想放入不同 TableView 的不同对象创建一个新的 FilteredTableViewObjectX
class?感谢您的帮助!
因为您的 class 已经使用类型 T
进行了参数化,您的 TableView
和 FilteredList
变量可以引用相同的类型。
请注意,该方法应该而不是参数化,因为那样的话,方法中的T
将引用与T
中不同类型的变量class(导致非常有趣的编译错误,例如 "Cannot convert from TableView<T>
to TableView<T>
")。
public class FilteredTableView<T> {
private TableView<T> tableView;
FilteredList<T> filteredData;
public FilteredTableView(TableView<T> tableView) {
this.tableView = tableView;
this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
this.tableView.setItems(this.filteredData);
}
}
我正在尝试将 TableView
的项目设置为 FilteredList
自己的项目,但这样做时出现错误。
public class FilteredTableView<T> {
private TableView<?> tableView;
FilteredList<?> filteredData;
public <T> FilteredTableView(TableView<T> tableView) {
this.tableView = tableView;
this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
this.tableView.setItems(this.filteredData); // The method setItems(ObservableList<capture#4-of ?>) in the type TableView<capture#4-of ?> is not applicable for the arguments (FilteredList<capture#5-of ?>)
}
}
有没有一种方法可以解决这个问题,而不必为每个我想放入不同 TableView 的不同对象创建一个新的 FilteredTableViewObjectX
class?感谢您的帮助!
因为您的 class 已经使用类型 T
进行了参数化,您的 TableView
和 FilteredList
变量可以引用相同的类型。
请注意,该方法应该而不是参数化,因为那样的话,方法中的T
将引用与T
中不同类型的变量class(导致非常有趣的编译错误,例如 "Cannot convert from TableView<T>
to TableView<T>
")。
public class FilteredTableView<T> {
private TableView<T> tableView;
FilteredList<T> filteredData;
public FilteredTableView(TableView<T> tableView) {
this.tableView = tableView;
this.filteredData = new FilteredList<>(tableView.getItems(), s -> true);
this.tableView.setItems(this.filteredData);
}
}