Guis erstellen mit FXML und javaFX gemischt

venator

Mitglied
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
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
 

Paddelpirat

Bekanntes Mitglied
Die NullPointerException bekommst du, weil du das Label der
Code:
mainPane
hinzufügen möchtest, aber du initialisierst ja nur deine Parent
Code:
root
.

Edit: Bei mir funktioniert das übrigens dann auch mit einer AnchorPane, die ich über FXML erstelle, mit dem FXMLLoader lade und zu der ich anschließend noch einen Button im Java-Code hinzufüge.

Würde dir zum Testen, mal NetBeans empfehlen, weil es da direkt ein funktionierendes Beispiel gibt.
 
Zuletzt bearbeitet:

venator

Mitglied
Hallo Paddelpirat danke für deine schnelle Antwort,

eigentlich sollte die mainPane durch die sample.fxml bereits initialisiert werden.
Durch
Code:
@FXML private Pane mainPane;
sollte die mainPane in Testapplication.java bekannt sein. (dachte ich)

Benutze auch Netbeans, da mir e(fx)clipse zu umständlich war. Habe auch schon einige Tutorials und Beispiele durchgearbeitet. Jedoch hat mir noch keines bei meinem Problem geholfen.

kannst Du mir noch zeigen, wie Du die mainPane oder AnchorPane initialisiert hast?
 

Paddelpirat

Bekanntes Mitglied
Hmm vielleicht musst du noch das
Code:
Initializable
implementieren. Ansonsten schätze ich mal, dass das in dem Beispiel funktioniert, weil es zu dem Sample.fxml eine gleichnamige Sample.java gibt.
Aber wie du im Hauptprogramm unten siehst, habe ich die AnchorPane, wie du, mit dem FXMLLoader geladen und anschließend noch einen zusätzlichen Button darauf im Java-Code hinzugefügt.

Ich poste einfach mal wie das bei mir im Beispielprogramm aussieht:

Sample.fxml
Java:
<?xml version="1.0" encoding="UTF-8"?>

<?import java.lang.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml" fx:controller="javafxml.Sample">
    <children>
        <Button id="button" layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
        <Label id="label" layoutX="126" layoutY="120" minHeight="16" minWidth="69" prefHeight="16" prefWidth="69" fx:id="label" />
    </children>
</AnchorPane>

Sample.java
Java:
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;

public class Sample implements Initializable {
    
    @FXML
    private Label label;
    
    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("You clicked me!");
        label.setText("Hello World!");
    }
    
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    
}

und das aufrufende Programm: JavaFXML.java
Java:
public class JavaFXML extends Application {
    
    public static void main(String[] args) {
        Application.launch(JavaFXML.class, args);
    }
    
    @Override
    public void start(Stage stage) throws Exception {
        AnchorPane root = (AnchorPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
        root.getChildren().add(new Button("Test Me"));
        
        stage.setScene(new Scene(root));
        stage.show();
    }
}

Edit: Was du evtl. noch ausprobieren könntest ist bei dir
Code:
fx:controller="testapplication.Sample"
auf
Code:
fx:controller="testapplication.TestApplication"
zu ändern. Schaue mir das aber auch gerade zum ersten Mal an ;-)
 
Zuletzt bearbeitet:

venator

Mitglied
Du hast recht. Danke nochmal für das Beispiel.

Desweiteren ist es wahrscheinlich auch kein guter Stil den Button in der
Code:
start
Methode hinzuzufügen.

Dafür ist wahrscheinlich die
Code:
Initializable
da. Hier funktioniert das hinzufügen der Elemente auch besser.

In der
Code:
start
methode ist die Refenenz
Code:
@FXML private Label label;
noch nicht gefüllt.
Somit die NullPointerException.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K welches package muss ich angeben um GUIs zu erstellen? AWT, Swing, JavaFX & SWT 5
J Objekte von 2 GUIs zusammenfassen AWT, Swing, JavaFX & SWT 2
M Zeichenketten in GUIs (toString() vermeiden?) AWT, Swing, JavaFX & SWT 4
J Zwei GUIs - Nach button-Klick soll ein Wert an die andere GUI übergeben werden AWT, Swing, JavaFX & SWT 15
U Swing Fragen bezüglich Multithreaded GUIs (Grundlagen): AWT, Swing, JavaFX & SWT 3
J LookAndFeel Java-GUIS AWT, Swing, JavaFX & SWT 19
2 Werde Java GUIs immer noch mit dem in die Jahre gekommen Swing gemacht? AWT, Swing, JavaFX & SWT 12
newcron Suche die hässlichsten Swing GUIs AWT, Swing, JavaFX & SWT 4
P seltsame Performance Probleme bei 2 Guis abhängig vom Aufruf AWT, Swing, JavaFX & SWT 8
2 Schönere GUIs? AWT, Swing, JavaFX & SWT 9
P richtige "Architektur" mit GUIs AWT, Swing, JavaFX & SWT 2
M Swing bremst GUIs von allen Programmen aus AWT, Swing, JavaFX & SWT 8
O Strukturieren von GUIs AWT, Swing, JavaFX & SWT 22
K UNICODE ZEICHEN in den SWing-GUIs AWT, Swing, JavaFX & SWT 4
A Automatisierter Test von Swing GUIs AWT, Swing, JavaFX & SWT 3
M Wie machen die diese GUIs? AWT, Swing, JavaFX & SWT 2
G GUIs miteinander verknüpfen AWT, Swing, JavaFX & SWT 5
M eigene GUI Bibliothek erstellen. AWT, Swing, JavaFX & SWT 10
M Mandelbrot mit BigDecimal erstellen und in der UI zeichnen, funktionierte nicht. AWT, Swing, JavaFX & SWT 1
I Hilfe bei dem Erstellen einer SQL Abfrage aus gewählten JComboBoxen AWT, Swing, JavaFX & SWT 5
C Swing ImageIcon erstellen, skalieren und verwenden AWT, Swing, JavaFX & SWT 3
T src ordner erstellen AWT, Swing, JavaFX & SWT 6
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
melaniemueller Confirmation Dialog erstellen AWT, Swing, JavaFX & SWT 18
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
E Putzplan erstellen AWT, Swing, JavaFX & SWT 15
news2swen automatisches erstellen eines Languagefiles AWT, Swing, JavaFX & SWT 1
W Clear Canvas und anschließendes neues Erstellen von Objekten auf Canvas aus ArrayList AWT, Swing, JavaFX & SWT 4
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
D runnable Jar mit Javafx erstellen(Eclipse) AWT, Swing, JavaFX & SWT 10
N Kontextmenü (Popup-Fenster) erstellen AWT, Swing, JavaFX & SWT 3
L JavaFX PropertyView mit dynamischer EditCell erstellen? AWT, Swing, JavaFX & SWT 8
C Falschfarbenbild (lineare Grauwertspreizung)aus Grauwert-Bild erstellen AWT, Swing, JavaFX & SWT 15
H Beim JFrame erstellen ein anderes schließen AWT, Swing, JavaFX & SWT 0
Z Random Butten erstellen ohne Container AWT, Swing, JavaFX & SWT 15
F Verzeichnis über GUI erstellen AWT, Swing, JavaFX & SWT 2
J Exception beim JFrame erstellen AWT, Swing, JavaFX & SWT 6
S Labels in Panel erstellen AWT, Swing, JavaFX & SWT 1
B JavaFX RadioButtons erstellen AWT, Swing, JavaFX & SWT 7
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
A Objekt von einem Window erstellen? AWT, Swing, JavaFX & SWT 8
K Buttons dynamisch erstellen (NetBeans) AWT, Swing, JavaFX & SWT 10
ralfb1105 JavaFX TreeView dynamisch aus Datenbank Tabelle erstellen AWT, Swing, JavaFX & SWT 22
ralfb1105 JavaFX Dynamisch TableView Spalten erstellen AWT, Swing, JavaFX & SWT 4
O Basics - Anwendung erstellen mit mehreren Szenen AWT, Swing, JavaFX & SWT 1
dereki2000 LookAndFeel Individuelles LAF erstellen AWT, Swing, JavaFX & SWT 9
C SWT Breadcrumb Zeile mit entsprechenden Hyperlinks erstellen AWT, Swing, JavaFX & SWT 0
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
L Chat erstellen AWT, Swing, JavaFX & SWT 13
N "Automatisches" erstellen von jButtons AWT, Swing, JavaFX & SWT 1
K Aus 2 Arrays xy - Graph erstellen AWT, Swing, JavaFX & SWT 9
K Swing outerPanel und innerPanel erstellen AWT, Swing, JavaFX & SWT 4
N Eclipse - GUI - MacBook - Buttonsichtbarkeit beim Anlegen/Erstellen AWT, Swing, JavaFX & SWT 14
Timo_neu_in_java Buttons Erstellen AWT, Swing, JavaFX & SWT 6
P JList erstellen AWT, Swing, JavaFX & SWT 4
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
J Statistik erstellen AWT, Swing, JavaFX & SWT 3
H GUI erstellen um JUnit Tests auszuführen AWT, Swing, JavaFX & SWT 29
H JavaFX via .fxml einen abgeleiteten Button erstellen... AWT, Swing, JavaFX & SWT 4
D Swing JComboBox (DefaultComboBoxModel) überschreibt Eintrag beim erstellen AWT, Swing, JavaFX & SWT 0
Prafy Sich ändernde Farbverläufe erstellen AWT, Swing, JavaFX & SWT 4
Thallius Swing Mehrere tausend "Panels" erstellen AWT, Swing, JavaFX & SWT 3
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
M JavaFX GUI-Elemente erstellen, nachdem die GUI geladen hat AWT, Swing, JavaFX & SWT 4
U dynamisches JTree erstellen AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
D JavaFX build.fxbuild error beim Erstellen einer exe AWT, Swing, JavaFX & SWT 2
T JavaFX Flexible Layouts dynamisch erstellen / Design-Inspirationen AWT, Swing, JavaFX & SWT 8
J JavaFX JavaFX exe erstellen AWT, Swing, JavaFX & SWT 5
E JavaFX JavaFX - MenuItem erstellen aus dem Inhalt einer HashMap AWT, Swing, JavaFX & SWT 1
G Programm GUI erstellen AWT, Swing, JavaFX & SWT 5
N Swing JTree Problem beim erstellen der Knoten AWT, Swing, JavaFX & SWT 0
G Anonyme Instanz von JXImageView erstellen und mit Bild initialisieren AWT, Swing, JavaFX & SWT 7
M "(Buch-)Seiten" erstellen AWT, Swing, JavaFX & SWT 2
R AWT AWT Textfeld durch Klick auf Button erstellen? AWT, Swing, JavaFX & SWT 3
H Swing Probleme beim erstellen eines neuen Objektes durch einen Button AWT, Swing, JavaFX & SWT 10
Z Diagramm mit jfreechart quadratisch erstellen AWT, Swing, JavaFX & SWT 1
F JButtons erstellen lassen mit unterschiedlichen Funktionen AWT, Swing, JavaFX & SWT 3
T JPanel dynamisch erstellen AWT, Swing, JavaFX & SWT 4
J Logikfehler im erstellen eines GUI AWT, Swing, JavaFX & SWT 3
A Swing Frames richtig erstellen AWT, Swing, JavaFX & SWT 3
T Wizard mit NEXT Button erstellen AWT, Swing, JavaFX & SWT 11
D gerichteten Graph erstellen AWT, Swing, JavaFX & SWT 2
D Swing Ansichtstranformationsmatrix erstellen AWT, Swing, JavaFX & SWT 0
M JavaFX MSI oder EXE aus JavaFX Projekt erstellen? AWT, Swing, JavaFX & SWT 2
R Kästchen mit Zufallsfarben erstellen AWT, Swing, JavaFX & SWT 2
A Fehler bei erstellen eines JTextFields AWT, Swing, JavaFX & SWT 2
A Fenster erstellen AWT, Swing, JavaFX & SWT 2
G Label erstellen AWT, Swing, JavaFX & SWT 6
G Blöcke erstellen AWT, Swing, JavaFX & SWT 4
K Swing Terminplaner erstellen AWT, Swing, JavaFX & SWT 7
G JavaFX Neues Fenster erstellen AWT, Swing, JavaFX & SWT 3
M Wie kann ich eine an Apple Automator angelehnte GUI erstellen? AWT, Swing, JavaFX & SWT 1
T An/aus Button erstellen AWT, Swing, JavaFX & SWT 5
A Swing Transparenten JPanel erstellen AWT, Swing, JavaFX & SWT 5
D Jahreskalender erstellen AWT, Swing, JavaFX & SWT 2
R Int aus JSpinner auslesen und Tabelle erstellen AWT, Swing, JavaFX & SWT 3
W JTable erstellen und Spalten sortieren AWT, Swing, JavaFX & SWT 2
B Erstellen eigener Combobox ("CellFactory") AWT, Swing, JavaFX & SWT 4
K Swing SwingGUI - Erstellen für Anfänger AWT, Swing, JavaFX & SWT 15

Ähnliche Java Themen

Neue Themen


Oben