viewAllButton.setOnAction(event -> {
try {
FXMLLoader loader = new FXMLLoader(getClass().getResource(“search_results.fxml”));
Parent searchResultsRoot = loader.load();
// Get the controller and set the toner data
SearchResultsController controller = loader.getController();
controller.setTonerData(tonerData);
Stage searchResultsStage = new Stage();
searchResultsStage.setTitle("View All Toners");
searchResultsStage.setScene(new Scene(searchResultsRoot, 800, 600));
searchResultsStage.initModality(Modality.WINDOW_MODAL);
searchResultsStage.initOwner(primaryStage);
searchResultsStage.show();
TableView<PrinterToner> searchResultsTable = (TableView<PrinterToner>) searchResultsRoot.lookup("#search_results");
searchResultsTable.setItems(tonerData);
searchResultsTable.setOnMouseClicked(event1 -> {
if (event1.getClickCount() == 2 && !searchResultsTable.getSelectionModel().isEmpty()) {
PrinterToner selectedToner = searchResultsTable.getSelectionModel().getSelectedItem();
openTonerPopup(selectedToner);
}
});
} catch (IOException e) {
e.printStackTrace();
}
});
When i run my application and click on the view all button i get a java.lang.NullPointerException on the controller
Exception in thread “JavaFX Application Thread” java.lang.NullPointerException: Cannot invoke “com.example.toner_inventory.SearchResultsController.setTonerData(javafx.collections.ObservableList)” because “controller” is null
at com.example.toner_inventory/com.example.toner_inventory.App.lambda$start$2(App.java:64)
this is my searchResultsController
package com.example.toner_inventory;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
public class SearchResultsController {
@FXML
private TableView<PrinterToner> search_results;
@FXML
private TableColumn<PrinterToner, String> serialNumberCol;
@FXML
private TableColumn<PrinterToner, String> locationCol;
@FXML
private TableColumn<PrinterToner, String> colorCol;
@FXML
private TableColumn<PrinterToner, String> checkoutDateCol;
@FXML
public void initialize() {
serialNumberCol.setCellValueFactory(new PropertyValueFactory<>("serialNumber"));
locationCol.setCellValueFactory(new PropertyValueFactory<>("location"));
colorCol.setCellValueFactory(new PropertyValueFactory<>("color"));
checkoutDateCol.setCellValueFactory(new PropertyValueFactory<>("checkoutDate"));
}
public void setTonerData(ObservableList<PrinterToner> tonerData) {
search_results.setItems(tonerData);
}
}
Moiz Noorani is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.