将按钮添加到TableView中的列JavaFX

问题描述:

所以,我试图使用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

正如您在TableCell javadoc中看到的,TableCell中没有addItems方法。您可能想要使用the updateItem method

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

嗨,谢谢你的回答,我已经完成了updateItem方法,那么有什么办法可以添加一个“添加项目”按钮到列吗? – Milan

+0

@Milan你可以在类中添加一个'addItem'方法,但这并不意味着它被添加到'TableCell'中。此外,这些用途似乎非常有限,尤其是因为您在此处使用anonymus类,因此从anonymus类本身之外访问此方法的唯一方法就是反射。 – f*