簡體   English   中英

JavaFX TableColumn.setCellValueFactory()拋出空指針

[英]JavaFX TableColumn.setCellValueFactory() throws null pointer

初始化我的一個表時出現問題。 我先啟動我的程序,然后再加載數據。

我有以下設置:

Main.java:初始化程序並加載所有控制器,這可以正常工作。 它還具有加載數據的功能,如果這樣做,則將其存儲在列表中。

TableViewController.java控制程序中一個包含TableView選項卡。

程序啟動時,在Main.java中調用setMain

@FXML
private TableView<MyObject> tableView;
@FXML
private TableColumn<MyObject, String> columnOne;
@FXML
private TableColumn<MyObject, Integer> columnTwo;
@FXML
private TableColumn<MyObject, String> columnThree;

public void setMain(Main main) {
    this.main = main;
    tableView.setItems(main.getMyObjectObservableList());
}

public void updateContents() {    
    columnOne.setCellValueFactory(value->value.getValue().getType());   
    columnTwo.setCellValueFactory(value->value.getValue().getTotal().asObject());
    columnThree.setCellValueFactory(value->value.getValue().getTrend());
}

我越來越

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
Caused by: java.lang.NullPointerException

columnOne.SetCellValueFactory;行中columnOne.SetCellValueFactory;

我使用了Eclipse調試器,並在updateContents處設置了一個斷點,我的TableView對象被加載了數據。

為什么會引發異常?

EDIT1:

FXML:

<TableView fx:id="tableView">
                 <columns>
                    <TableColumn fx:id="columnOne" prefWidth="411.0" text="title" />
                    <TableColumn fx:id="columnTwo" maxWidth="335.0" minWidth="-1.0" prefWidth="188.0" />
                    <TableColumn fx:id="columnThree" maxWidth="335.0" minWidth="-1.0" prefWidth="188.0" />
                 </columns>
              </TableView>

加載FXML:

    public void initTable() {
    try {
        FXMLLoader loader = new FXMLLoader();
        loader.setLocation(Main.class.getResource("view/Table.fxml"));
        AnchorPane table = (AnchorPane) loader.load();

        Tab t = new Tab();
        t.setText("Table");
        t.setContent(table);

        mainTabPane.getTabs().add(t);

        tableViewController = loader.getController();
        tableViewController.setMain(this);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

更新內容:

public void loadData(File[] files) throws IOException {
//loading data here
myObjectObservableList.add( new MyObject(params));
TableViewController.updateContents();
}

fabian在對問題本身的評論之一中回答了該問題。

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM