JavaFX: невозможно установить элементы TableView в FilteredList собственных элементов - PullRequest
1 голос
/ 27 мая 2020

Я пытаюсь установить элементы из 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 ?>)
    }

}

Есть ли способ решить эту проблему, не имея создать новый класс FilteredTableViewObjectX для каждого объекта, который я хочу поместить в другой TableView? Спасибо за помощь!

1 Ответ

4 голосов
/ 27 мая 2020

Поскольку ваш класс уже параметризован типом T, ваши переменные TableView и FilteredList могут относиться к одному и тому же типу.

Обратите внимание, что метод должен не параметризоваться, потому что тогда T в методе будет ссылаться на переменную другого типа, чем T в классе (что приводит к действительно интересным ошибкам компиляции. например «Невозможно преобразовать из TableView<T> в 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); 
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...