Hallo,
beschäftige mich zurzeit viel mit JavaFx und FXML. Dabei tritt bei mir die Frage auf ob sich beiden Möglichkeiten ein GUI zu erstellen ergänzen können (1. FXML 2. Direkt in JavaFX). Entgültiges Ziel ist es z.B den rechten Teil einer horizontalen splitpane dynamisch zur Laufzeit in Java zu erstellen, während der rechte Teil statisch in einer FXML Datei definiert wird.
Habe viel ausprobiert, scheitere aber irgendwie ständig. Eigentlich versuche ich nur der im FXML definierten mainPane ein neues Label in der Javaklasse hinzuzufügen.
Am Besten zeige ich euch mal im Quellcode an einem stark vereinfachten Beispiel was ich meine.
sample.fxml
TestApplication.java
Im Controller passiert noch nichts.
Wenn ich das jetzt versuche zu starten, bekomme ich eine java.lang.NullPointerException in der Zeile [JAVA=18]mainPane.getChildren().add(label);[/code] geworfen.
Kann ich die beiden Möglichkeiten eine GUI zu erstellen nicht mischen.
Was mache ich falsch? ???:L
Danke im Voraus
beschäftige mich zurzeit viel mit JavaFx und FXML. Dabei tritt bei mir die Frage auf ob sich beiden Möglichkeiten ein GUI zu erstellen ergänzen können (1. FXML 2. Direkt in JavaFX). Entgültiges Ziel ist es z.B den rechten Teil einer horizontalen splitpane dynamisch zur Laufzeit in Java zu erstellen, während der rechte Teil statisch in einer FXML Datei definiert wird.
Habe viel ausprobiert, scheitere aber irgendwie ständig. Eigentlich versuche ich nur der im FXML definierten mainPane ein neues Label in der Javaklasse hinzuzufügen.
Am Besten zeige ich euch mal im Quellcode an einem stark vereinfachten Beispiel was ich meine.
sample.fxml
Java:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>
<?import javafx.collections.*?>
<Pane fx:controller="testapplication.Sample"
xmlns:fx="http://javafx.com/fxml"
fx:id="mainPane">
</Pane>
TestApplication.java
Java:
public class TestApplication extends Application {
@FXML private Pane mainPane;
public static void main(String[] args) {
Application.launch(TestApplication.class, args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
stage.setScene(new Scene(root));
stage.show();
Label label = new Label();
label.setText("Hello");
mainPane.getChildren().add(label);
}
}
Im Controller passiert noch nichts.
Wenn ich das jetzt versuche zu starten, bekomme ich eine java.lang.NullPointerException in der Zeile [JAVA=18]mainPane.getChildren().add(label);[/code] geworfen.
Kann ich die beiden Möglichkeiten eine GUI zu erstellen nicht mischen.
Was mache ich falsch? ???:L
Danke im Voraus