Ich bin neu zu javafx vor kurzem, und ich lade fxml immer im Konstruktor der Controller-Klasse und verwende dann Komponenten direkt.JavaFX FXML-Konstruktor und Initialisierungsmethode
Ich habe gerade gelernt, dass die Komponenten nur zugegriffen werden kann, bevor initialize aufgerufen wurde.
Aber es ist sehr seltsam, auch wenn ich Komponente nur im Konstruktor verwende, gibt es keine Fehler auftreten. Mein Code sieht so aus.
@Override
public void start(Stage primaryStage){
new MainController(primaryStage,this);
}
public class MainController{
@FXML
private ListView<HistoryPlay> historyLV;
public MainController(Stage primaryStage, Main main) {
initFxml();
initView();
}
private void initFxml() {
FXMLLoader loader=new FXMLLoader();
loader.setController(this);
try {
loader.setLocation(new File("fxml\\Main.fxml").toURL());
loader.load();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
private void initView() {
historyLV.setCellFactory(param -> new HistoryListCell(MainController.this,main));
historyLV.setItems(main.getHistoryManager().getHistoryList());
}
}
Es gibt keine Nullpunkt Ausnahme auftreten. Warum?