Java, varför får jag nullpointerexception?
Jag håller på och trasslar med ett GUI som är skapat med JavaFX och försöker att få ordning på två st comboboxes. Efter att jag gjort ett val i den första comboboxen (combobox_suppliers) så fylls den andra comboboxen (combobox_radio) med data samt sätter ändrar värdet på två labels. (label_rad_substance, label_halftime).
När jag väljer först den ena comboboxen och sedan den andra så funkar allt. Men om jag sedan väljer något annat alternativ i den första komboboxen så får jag en massa errors i konsolen med bland annat nullpointerexceptions. Programmet funkar dock fortfarande och gör som det ska.
package gui;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Date;
import java.util.ResourceBundle;
import dao.RadiopharmaceuticalDao;
import dao.SupplierDao;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.CheckBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
import javafx.scene.control.TextField;
import model.Radiopharmaceutical;
import model.Room;
import model.Supplier;
public class Controller implements Initializable {
private ObservableList<Supplier> supplierList = FXCollections.observableArrayList();
private ObservableList<Radiopharmaceutical> radioList = FXCollections.observableArrayList();
public DatePicker ankomstdatum = new DatePicker();
public DatePicker kalibreringsdatum = new DatePicker();
public ComboBox<Supplier> combobox_suppliers = new ComboBox<>();
public ComboBox<Radiopharmaceutical> combobox_radio = new ComboBox<>();
public ComboBox<Room> combobox_room = new ComboBox<>();
public Label label_rad_substance = new Label();
public Label label_halftime = new Label();
public TextField text_kalibreringsaktivitet = new TextField();
public TextField text_kalibreringstid = new TextField();
public TextField text_batchnr = new TextField();
public TextField text_kommentar = new TextField();
public ListView<String> listView = new ListView<String>();
public CheckBox check_kontamineringskontroll = new CheckBox();
public Button button = new Button();
public void addSuppliersToComboBox() {
supplierList.addAll(new SupplierDao().getAll());
combobox_suppliers.getItems().addAll(supplierList);
}
public void addProductsToComboBox() {
// if(!productsAdded) {
// combobox_radio.setDisable(false);
// productsAdded=true;
// }
//
// radioList.clear();
// radioList.addAll(new RadiopharmaceuticalDao().getRadiopharmaceuticalsBySupplierName(combobox_suppliers.getValue().toString()));
// combobox_radio.getItems().clear();
// combobox_radio.getItems().addAll(radioList);
// combobox_radio.getSelectionModel().selectFirst();
// System.out.println(combobox_radio.getItems().size());
}
public void ContaminationCheck(){
}
public void disableElements() {
}
public String getCurrentDate() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
return dateFormat.format(date);
}
@Override
public void initialize(URL location, ResourceBundle resources) {
addSuppliersToComboBox();
ankomstdatum.setValue(LocalDate.now());
combobox_radio.setDisable(true);
combobox_suppliers.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) ->{
combobox_radio.getItems().clear();
combobox_radio.getItems().addAll(FXCollections.observableArrayList(new RadiopharmaceuticalDao().getRadiopharmaceuticalsBySupplierName(newValue.toString())));
combobox_radio.setDisable(false);
combobox_radio.getSelectionModel().selectFirst();
});
combobox_radio.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue)->{
label_rad_substance.setText(combobox_radio.getValue().getSubstance().getName());
label_halftime.setText(combobox_radio.getValue().getSubstance().getHalfLife()+"");
});
}
}