2016-08-25 4 views
0

Итак, я пытаюсь добавить кнопку в столбец, используя Table View в JavaFX. Я успешно создал одну кнопку для одного столбца; использование того же кода для добавления другой кнопки в другой столбец с небольшой заменой переменных приводит к одной ошибке, которую я не могу исправить. Ошибка заключается в том, что она не позволяет мне использовать слово super. Ниже приведен код, в котором я ошибаюсь;Добавление кнопки в столбец в TableView JavaFX

TableColumn<UserDetails, UserDetails> addColumn = column("Add", ReadOnlyObjectWrapper<UserDetails>::new, 50); 

    addColumn.setCellFactory(col -> { 
     Button addButton = new Button("Add"); 
     TableCell<UserDetails, UserDetails> addCell = new TableCell<UserDetails, UserDetails>() { 
      public void addItems(UserDetails userDetails, boolean empty) { 
       super.addItems(userDetails, empty); //This line is the error (super) 
       if (empty) { 
        setGraphic(null); 
       } else { 
        setGraphic(addButton); 
       } 
      } 

     }; 

     addButton.setOnAction(event -> add(addCell.getItem(), primaryStage)); 
     return addCell; 
    }); 

что я делаю неправильно?

+0

В чем именно находится «ошибка», с которой вы сталкиваетесь? – iMan

ответ

2

Как вы можете видеть в TableCell javadoc, нет addItems метода в TableCell. Вероятно, вы хотели использовать the updateItem method:

@Override 
protected void updateItem(UserDetails userDetails, boolean empty) { 
    super.updateItem(userDetails, empty); 
    ... 
+0

Привет, спасибо за ваш ответ, я сделал метод updateItem, так что есть ли вообще способ добавить кнопку «Добавить элемент» в столбец? – Milan

+0

@Milan Of Yourse вы можете добавить в класс метод 'addItem', но это не значит, что он добавлен в 'TableCell'. Кроме того, использование кажется довольно ограниченным, тем более, что вы используете здесь класс анонимуса, поэтому единственный способ получить доступ к этому методу извне самого класса анонимуса будет отражением. – fabian

Смежные вопросы