我想创建一个包含多个TableViews的GUI。我有一个TableView
包含不同的菜肴,另一个TableView
包含所选菜肴包含的成分。因此,我为菜TableView
创建了一个侦听器,该侦听器将获取所选菜的食谱并将其显示在第二个TableView
上。所述菜肴的食谱存储在Map<Ingredient, Number>
内部,因此为了更轻松地支付TableView
,我创建了一个名为Recipe
的内部类。
这是Recipe
类:
class Recipe {
Ingredient ingredient;
Number amount;
public Recipe(Ingredient ingredient, Number amount){
this.ingredient = ingredient;
this.amount = amount;
}
}
以下是食谱TableView
的代码:
ingredientTableView = new TableView<>();
// Table columns for Ingredient Table
TableColumn<Recipe,Ingredient> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(new PropertyValueFactory<>("name"));
TableColumn<Recipe,Number> unitColumn = new TableColumn<>("Amount");
unitColumn.setCellValueFactory(new PropertyValueFactory<>("amount"));
ingredientTableView.getColumns().addAll(nameColumn, unitColumn);
这是侦听器的代码:
dishTableView.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> {
Map<Ingredient,Number> recipe = newSelection.getRecipe();
for(Map.Entry<Ingredient,Number> cursor: recipe.entrySet()){
Recipe newRecipe = new Recipe(cursor.getKey(), cursor.getValue());
recipeObservableList.add(newRecipe); //this is where I get the NPE
}
ingredientTableView.setItems(recipeObservableList);
});
因此,当我在dishTableView
中选择任何菜肴时,都会遇到以下异常:
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
提前感谢您的帮助!