Кнопка не отображается в столбце таблицы в java-fx

Вот код: Класс контроллера: @FXML private TableView<User> table; @FXML private TableColumn<User,String> view;

method() {..... ` view.setCellValueFactory(new PropertyValueFactory("DUMMY"));

        Callback<TableColumn<User, String>, TableCell<User, String>> cellFactory
                = new Callback<TableColumn<User, String>, TableCell<User, String>>() {
            public TableCell call( TableColumn<User, String> param) {
                final TableCell<User, String> cell = new TableCell<User, String>() {

                    Button btn = new Button("View");

                    @Override
                    public void updateItem(String item, boolean empty) {
                        super.updateItem(item, empty);
                        if (empty) {
                            setGraphic(null);
                            setText(null);
                        } else {
                            btn.setOnAction(new EventHandler<ActionEvent>() {
                                public void handle(ActionEvent e) {
                                User user = getTableView().getItems().get(getIndex());
                                System.out.println(user.username
                                        + "   " + user.name);
                                }
                            });

                            setGraphic(btn);
                            setText(null);
                        }
                    }
                };
                return cell;
            }
        };

        view.setCellFactory(cellFactory);
       //add observablelist
       table.getItems().setAll(datas);
}`  

Я позаимствовал код отсюда: Как добавить кнопку в табличное представление JavaFX Действительно, мне нечего делать в моем столбце View. Компилятор жалуется, что я не могу использовать new PropertyValueFactory‹>("DUMMY")) без параметров в jdk 1.7. Кроме того, почему я не могу использовать такое выражение для столбца кнопок @FXML private TableColumn view? Я также должен отметить, что я изменил исходный код с лямбдой (возможно только в 1.8).


person arkk    schedule 11.12.2017    source источник
comment
Какой язык вы используете?   -  person Obsidian Age    schedule 11.12.2017
comment
Очевидно, Ява. Я изменил исходный код, просто используя стандартную обработку событий кнопки вместо лямбда-выражения. И используется не PropertyValueFactory‹›, а PropertyValueFactory‹User,String›, но почему бы не использовать PropertyValueFactory‹User, Button›? Все равно почему не работает.   -  person arkk    schedule 11.12.2017
comment
Очевидно, в исходной ссылке есть некоторая дезинформация.   -  person arkk    schedule 11.12.2017
comment
В исходном коде есть подсказка, что изменения нужны -- сначала -- тот = // - просто для удаления комментария. Действительно, чтобы отобразить кнопку, вам нужно поместить в PropertyValueFactory‹›(DUMMY)) вместо DUMMY какое-то непустое свойство, даже если вы использовали его для другого строкового столбца - например, имя пользователя, у которого есть как минимум геттер getUsername() с полем имени пользователя, если свойство java-fx нет.   -  person arkk    schedule 11.12.2017