我有这个代码(一个非常大的应用程序的一部分): 以下函数位于项目的控制器类中。
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
中可见,但似乎不执行它所拥有的代码...