Как создать JavaFX TableView без предупреждений? - PullRequest
0 голосов
/ 13 декабря 2018

Я следую учебнику Oracle , чтобы создать TableView в JavaFX.На этом скриншоте я скопировал и вставил код и получил несколько ошибок, которые нигде не упомянуты в руководстве.

enter image description here

Предупреждение в TableView гласит:

TableView является необработанным типом.Ссылки на универсальный тип TableView должны быть параметризованы

предупреждение в TableColumn говорит:

TableColumn является необработанным типом.Ссылки на универсальный тип TableColumn должны быть параметризованы

, а предупреждение о методе addAll гласит:

Тип безопасности: метод addAll (Object...) принадлежит необработанному типу ObservableList.Ссылки на универсальный тип ObservableList должны быть параметризованы

Я посмотрел документацию и увидел, что они действительно требуют параметров (что сбивает с толку, потому что в учебнике об этом не упоминалось), но я нене понимаю, кем они должны быть.Если я сделаю

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

и

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

, я все равно получу предупреждение о методе addAll, в котором говорится:

Безопасность типов: универсальный массивTableColumn создан для параметра varargs

Я действительно не могу понять, что ожидается для параметров типа.Я знаю, что могу подавить предупреждения, но это кажется плохой практикой.Что я должен делать вместо этого?

1 Ответ

0 голосов
/ 13 декабря 2018

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");
...