JavaFX-SceneBuilder - 打开新窗口时无法访问fx:id

时间:2017-08-20 19:44:41

标签: java javafx fxml scenebuilder

我有这个代码(一个非常大的应用程序的一部分): 以下函数位于项目的控制器类中。

public void callSearch(){
    Stage supplyStage = new Stage();
    Parent root = null;
    try {
        root = FXMLLoader.load(getClass().getResource("supplyResult.fxml"));

        supplyStage.setTitle("Supply Result Set");
        supplyStage.setScene(new Scene(root, 1400, 900));
        supplyStage.show();
    } catch (IOException e) {
        e.printStackTrace();
    }
    try {
        typeColumn.setCellValueFactory(new PropertyValueFactory<Supply, String>("type"));
        nameColumn.setCellValueFactory(new PropertyValueFactory<Supply, String>("name"));
        dateColumn.setCellValueFactory(new PropertyValueFactory<Supply, String>("order_date"));

        pricePerUnitColumn.setCellValueFactory(new PropertyValueFactory<>("pricePerUnit"));
        quantityColumn.setCellValueFactory(new PropertyValueFactory<>("quantity"));
    }
    catch (NullPointerException npe){
        System.out.println("Null...");
    }

    searchSupplyStartDate = java.sql.Date.valueOf(startDateDatePicker.getValue());
    searchSupplyEndDate = java.sql.Date.valueOf(endDateDatePicker.getValue());

    tableOutput.setItems(myMain.getSupplies(searchSupplyStartDate,searchSupplyEndDate,null,null));
}

我的问题是我在NullPointerException

行中得到了typeColumn.setCellValueFactory(new PropertyValueFactory<Supply, String>("type"));

在应用程序的先前版本中,我在与窗口其余部分相同的窗口中创建了列。现在我尝试在显示相同的东西时添加第二个窗口,以使第一个场景更美观。 (当我有一个场景时代码正常工作)。

事实上,为了清楚起见,我想按下一个按钮,调用函数callSearch()。然后会出现一个窗口,其中包含一个包含5列的表:typeColumn,nameColumn,dateColumn,pricePerUnitColumn,quantityColumn。这5列是在项目的(唯一)控制器中声明的,所以我认为它们在项目的任何fxml文件中都可见,但事实并非如此。

有人知道我错过了什么吗? typeColumn在场景构建器中的SupplyResult.fxml中可见,但似乎不执行它所拥有的代码...

0 个答案:

没有答案