2017-07-07 35 views
1

我想填充TableView与控制器中的列,但我不知道为什么我的解决方案无法正常工作。如何在FXML控制器中填充javafx.TableView?

在FXML我想填补元素,看起来是这样的:

<right> 
    <TableView id="datesTableView"> 
    </TableView> 
</right> 

在控制器:

public class ProjectController implements Initializable { 

    @Override 
    public void initialize(URL location, ResourceBundle resources) { 

    LocalDate first = p.getStartDate(); 
    LocalDate last = p.getLastDay(); 

    List<TableColumn> list = new LinkedList<>(); 
    while(!first.equals(last)) { 
     TableColumn tb = new TableColumn(); 
     tb.setGraphic(factory.getRotated(FileUtil.convertDateToString(first))); 
     list.add(tb); 
     first = first.plusDays(1); 
    } 
    datesTableView.getColumns().setAll(list); 

以下的tableview是包含列的日期。在循环中,我将后续日期添加到列,然后列出。当我尝试将列列表添加到最后一行的datesTableView时,我收到错误消息。休息是按照我想要的 - 我测试过它。

我收到的错误是:

Caused by: java.lang.NullPointerException 
    at ganttchart.controller.ProjectController.initialize(ProjectController.java:89) 
    at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2548) 
    ... 63 more 
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException: Root cannot be null 

89号线是

datesTableView.getColumns().setAll(list); 
+0

可能的重复[如何将行和列添加到JavaFX 8 TableView](https://stackoverflow.com/questions/25395016/how-can-i-add-rows-and-columns-to-a -javafx-8-tableview) – Chris

+0

可能在你没有显示的代码/ fxml中出现错误;)请阅读http://stackoverflow.com/help/mcve并相应地采取行动 – kleopatra

回答

-1

你会需要datesTableView定义的属性。使用@FXML注释。

相关问题