Ich möchte den Text eines FXML-Elements von außerhalb der Controller-Klasse ändern, indem ich eine Referenz in der Hauptfunktion verwende, aber ich bekomme eine NullPointerException.FXML-Element von außerhalb des Controllers mit Referenz ändern - NullPointerException
Klasse Controller:
public class Controller implements Initializable {
@FXML
public ComboBox<String> comboBoxSelectPort;
@Override
public void initialize(URL url, ResourceBundle rb) {
Language l = new Language();
l.setLanguage();
comboBox.setPromptText("New Text"); // This works!
}
}
Klasse Sprache:
public class Language {
private Controller c = Main.controller;
public void setLanguage(){
c.comboBox.setPromptText("New Text"); // This is NOT working!
}
}
UPDATE 1:
Klasse Main:
public class Main extends Application {
public static Stage stage;
public static Controller controller;
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader(getClass().getResource("Scene.fxml"));
Parent root = (Parent) loader.load();
controller = (Controller) loader.getController();
System.out.println(controller); // Works!
....
Aber in-Controller oder Sprachklasse
System.out.println(Main.controller); // Output: Null
UPDATE 2:
Das Problem scheint zu sein, dass sich der Controller im Haupt erstellt wird vor dem die Referenz erstellt wird.