I'm desperate. What am I missing? I'm getting a NullPointerException in Class ChartTabPageController.java at lineChart.getData().add(series);
MainController
/**
* Shows the person overview inside the root layout.
*/
public void showPriceOverview() {
try {
// Load person overview.
FXMLLoader loader = new FXMLLoader();
loader.setLocation(MainApp.class
.getResource("view/PriceOverviewTab.fxml"));
TabPane priceOverview = (TabPane) loader.load();
// Set person overview into the center of root layout.
rootLayout.setCenter(priceOverview);
// loader.getController() liefert eine Referenz vom Typ
// PersonOverviewController?
// Give the controller access to the main app.
PriceOverviewTabController controller = loader.getController();
// Dem Controller wird die MainApp übergeben, sodass dieser auf die
// ObservableList<Person> personData zugreifen kann
// In dem Controller erfolgt dann die Zuweisung von
// ObservableList<Person> und TableView<Person>
controller.setMainApp(this);
} catch (IOException e) {
e.printStackTrace();
}
}
Part of Middle Controller
/**
* Is called by the main application to give a reference back to itself.
*
* @param mainApp
*/
public void setMainApp(MainApp mainApp) {
this.mainApp = mainApp;
// Hier werden die "Daten" (ObservableList<PriceForward>) an den
// Controller übergeben und den PriceTabele Instanzen über die Methode
// setItems() zugewiesen.
priceTable.setItems(mainApp.getPriceData());
priceTable1.setItems(mainApp.getPriceData());
chartTabPageController = new ChartTabPageController();
chartTabPageController.setPriceData(mainApp.getPriceData());
}
Last Controller
public class ChartTabPageController {
@FXML
private LineChart<String, Double> lineChart;
@FXML
private CategoryAxis xAxis;
private ObservableList<String> time = FXCollections.observableArrayList();
/**
* Initializes the controller class. This method is automatically called
* after the fxml file has been loaded.
*/
@FXML
private void initialize() {
// Assign the month names as categories for the horizontal axis.
xAxis.setCategories(time);
}
/**
* Sets the persons to show the statistics for.
*
* @param persons
*/
public void setPriceData(List<PriceForward> prices) {
int j = 0;
for (int i = 0; i < 96; i++) {
time.add(LocalTime.of(0, 0, 0).plusMinutes(15 * i).toString());
}
Double[] price = new Double[prices.size()];
for (PriceForward p : prices) {
price[j] = p.getPriceToday();
j++;
}
XYChart.Series<String, Double> series = new XYChart.Series<>();
// Create a XYChart.Data object for each month. Add it to the series.
for (int i = 0; i < prices.size(); i++) {
series.getData().add(new XYChart.Data<>(time.get(i), price[i]));
}
lineChart.getData().add(series);
}
}
I have no clue why I'm getting a NullPointerException at my last line of code. Hope you guy can help ...