JavaFX JavaFX - Scene Builder - BorderPane

Hendrik-HP

Mitglied
Hallo Community,

ich (Anfänger) hoffe ich bin hier richtig und Ihr könnt mir helfen. Nach zwei Tagen recherchieren hab ich leider keine passende Lösung gefunden (oder ich verstehe die Erklärungen einfach nicht). Deshalb frag ich mal hier.

Folgendes Szenario:

Ich habe in meiner Main Stage ein BorderPane und im Center ein GridPane mit 4 Controls.

Nun möchte ich per Button ein anderes FXML Dokument im Center anzeigen lassen und dieses nicht in einem extra Fenster (GridPane soll dann ausgetauscht werden) während die Menüleisten bleiben sollen.

Wie kann ich das realisieren?

Muss ich das FXML Dokument als Scene erstellen und wie kann ich es dann einbinden oder kann ich das Dokument ganz normal als z.B. TabPane erstellen ohne Scene als Parent und dies dann mit setCenter einbinden?

Ich hoffe ich konnte es gut erklären.

Gruß
Hendrik
 

Anhänge

  • Bildschirmfoto 2020-10-04 um 16.38.11.png
    Bildschirmfoto 2020-10-04 um 16.38.11.png
    1,2 MB · Aufrufe: 105
  • Bildschirmfoto 2020-10-04 um 16.38.36.png
    Bildschirmfoto 2020-10-04 um 16.38.36.png
    871,7 KB · Aufrufe: 65

lam_tr

Top Contributor
Ist an sich umsetzbar.

Wo hängt es bei dir?

Code:
button.setOnAction(e -> borderPane.setCenter(fxmlPane)
);
 
Zuletzt bearbeitet:

Hendrik-HP

Mitglied
Hallo Iam_tr,

es hängt hauptsächlich bei ner IOException. Hab deinen Tipp mal übernommen. Hoffentlich richtig auch wenn nicht mit nem Lambda Ausdruck:

Java:
//Implementierung BorderPane (Scene Builder)
@FXML
private BorderPane borderPane;

//Button Action
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("statisticsScene.fxml")));
}

Bei der Ausführung bekomme ich dann folgende Exceptions:
- Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)

(Das sind mal nur 2 der vielen Zeilen. Zeile 84 in der Exception ist der setCenter Befehl im Button)
Bis jetzt hab ich im Netz nur den Fehler im Bezug mit Websites gefunden.
Hab ich da noch was vergessen zu schreiben oder hab ich was übersehen?
Hat es was damit zu tun, das der setCenter Befehl ein Node haben will und das FXML Dokument meines anfänglichen Wissens nach eine Scene ist?

Gruß
Hendrik
 

sascha-sphw

Top Contributor
Wie sieht denn die fxml Datei aus? So wie es im SceneBuilder aussieht hast Du da eine Scene als root node, stimmt das?

Falls ja, lösche die Scene und nimm als root node nur TabPane, dann sollte es klappen.
 

mrBrown

Super-Moderator
Mitarbeiter
Bei der Ausführung bekomme ich dann folgende Exceptions:
- Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)

(Das sind mal nur 2 der vielen Zeilen. Zeile 84 in der Exception ist der setCenter Befehl im Button)
Zeig mal den Rest der Fehlermeldung, der interessante Teil (der Grund der InvocationTargetException) kommt erst später :)
 

lam_tr

Top Contributor
Hallo Iam_tr,

es hängt hauptsächlich bei ner IOException. Hab deinen Tipp mal übernommen. Hoffentlich richtig auch wenn nicht mit nem Lambda Ausdruck:

Java:
//Implementierung BorderPane (Scene Builder)
@FXML
private BorderPane borderPane;

//Button Action
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("statisticsScene.fxml")));
}

Bei der Ausführung bekomme ich dann folgende Exceptions:
- Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
- at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)

(Das sind mal nur 2 der vielen Zeilen. Zeile 84 in der Exception ist der setCenter Befehl im Button)
Bis jetzt hab ich im Netz nur den Fehler im Bezug mit Websites gefunden.
Hab ich da noch was vergessen zu schreiben oder hab ich was übersehen?
Hat es was damit zu tun, das der setCenter Befehl ein Node haben will und das FXML Dokument meines anfänglichen Wissens nach eine Scene ist?

Gruß
Hendrik
Kann es vielleicht sein dass deine staticsScene.fxml nicht gefunden werden kann? Liegt die im Root Verzeichnis deines Classpaths?
 

Hendrik-HP

Mitglied
@sascha-sphw:
ich hatte es auch schonmal testweise mit einer Scene als Grundelement probiert hat aber auch nicht geklappt. Nun nutze ich eigentlich nur Panes (Grid/Border etc) als root Element

@mrBrown:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1862)
at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1729)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8886)
at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:208)
at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3856)
at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1851)
at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2584)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
at javafx.graphics/com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1857)
... 40 more
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3316)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3280)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3249)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3222)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3199)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3192)
at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)
... 51 more

@lam_tr:
alle FXML Dokumente liegen in einem Package. Hänge mal ein Screenshot mir dran. Ich kann so als neues Fenster auch auf alle Dokumente zugreifen und öffnen. Nur ein FXML Dokument im BorderPane anzeigen lassen kriege ich noch nicht hin...
 

Anhänge

  • Bildschirmfoto 2020-10-07 um 18.49.05.png
    Bildschirmfoto 2020-10-07 um 18.49.05.png
    1,6 MB · Aufrufe: 63

Hendrik-HP

Mitglied
soooo,
gesagt getan. Schreibfehler aus der FXMLDatei entfernt (tatsächlich ein 's' zuviel im Code), gefreut - Fehler gefunden, neu probiert, trotzdem nicht geklappt. Habe mir auch mal durch IntelliJ den Path kopiert (root Path, source Path...) also ohne Schreibfehler. Klappt aber beim besten Willen nicht.
Kann es vielleicht sein, das ich den ersten Center Content beim Laden auch als eigene FXML Datei einfügen muss unter Initialize und ihn Dann erst ersetzen kann? (also FXML durch FXML tauschen)
 

Hendrik-HP

Mitglied
Auch wieder dieselbe:

Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3316)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3280)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3249)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3222)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3199)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3192)
at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)
... 51 more
 

mrBrown

Super-Moderator
Mitarbeiter
Dann ist irgendwas immer noch nicht ganz korrekt, was gibt System.out.println(getClass().getResource("statisticScene.fxml")) aus?
Und was gibt System.out.println(getClass()) aus?
 

Hendrik-HP

Mitglied
In der Main Klasse:
class program.Main --- (System.out.println(getClass()))
null --- (System.out.println(getClass().getResource("statisticScene.fxml")))

wieso zum Teufel gibt der null aus? Hat doch Werte???
Gut der Controller noch nicht aber die FXML Datei. Und importiert ist auch alles...

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

<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>

<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/11.0.1" fx:controller="program.fxmlScenes.StatisticSceneController">
  <columnConstraints>
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
    <ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
  </columnConstraints>
  <rowConstraints>
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
    <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
  </rowConstraints>
   <children>
      <Label text="setCenter Test erfolgreich :)" />
   </children>
</GridPane>

Java:
package program.fxmlScenes;

public class StatisticSceneController {
}
 

Hendrik-HP

Mitglied
System.out.println(getClass()); :
class program.fxmlScenes.MainSceneController

System.out.println(getClass().getResource("statisticScene.fxml")); :
file:/Users/Hendrik/Library/Mobile%20Documents/com~apple~CloudDocs/Programmieren/Java/IntelliJ%20IDEA%20-%20Projekte/MoneyManager/out/production/MoneyManager/program/fxmlScenes/statisticScene.fxml
 

lam_tr

Top Contributor
@sascha-sphw:
ich hatte es auch schonmal testweise mit einer Scene als Grundelement probiert hat aber auch nicht geklappt. Nun nutze ich eigentlich nur Panes (Grid/Border etc) als root Element

@mrBrown:
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1862)
at javafx.fxml/javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(FXMLLoader.java:1729)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:49)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Node.fireEvent(Node.java:8886)
at javafx.controls/javafx.scene.control.Button.fire(Button.java:203)
at javafx.controls/com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(ButtonBehavior.java:208)
at javafx.controls/com.sun.javafx.scene.control.inputmap.InputMap.handle(InputMap.java:274)
at javafx.base/com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(CompositeEventHandler.java:247)
at javafx.base/com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:80)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:234)
at javafx.base/com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191)
at javafx.base/com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56)
at javafx.base/com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114)
at javafx.base/com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74)
at javafx.base/com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54)
at javafx.base/javafx.event.Event.fireEvent(Event.java:198)
at javafx.graphics/javafx.scene.Scene$MouseHandler.process(Scene.java:3856)
at javafx.graphics/javafx.scene.Scene.processMouseEvent(Scene.java:1851)
at javafx.graphics/javafx.scene.Scene$ScenePeerListener.mouseEvent(Scene.java:2584)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:409)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(GlassViewEventHandler.java:299)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleMouseEvent$2(GlassViewEventHandler.java:447)
at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:412)
at javafx.graphics/com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(GlassViewEventHandler.java:446)
at javafx.graphics/com.sun.glass.ui.View.handleMouseEvent(View.java:556)
at javafx.graphics/com.sun.glass.ui.View.notifyMouse(View.java:942)
at javafx.graphics/com.sun.glass.ui.mac.MacView.notifyMouse(MacView.java:127)
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:76)
at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(MethodUtil.java:273)
at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(MethodHelper.java:83)
at javafx.fxml/javafx.fxml.FXMLLoader$MethodHandler.invoke(FXMLLoader.java:1857)
... 40 more
Caused by: java.lang.NullPointerException: Location is required.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3316)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3280)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3249)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3222)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:3199)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:3192)
at program.fxmlScenes.MainSceneController.btnBookingsAction(MainSceneController.java:84)
... 51 more

@lam_tr:
alle FXML Dokumente liegen in einem Package. Hänge mal ein Screenshot mir dran. Ich kann so als neues Fenster auch auf alle Dokumente zugreifen und öffnen.

Caused by: java.lang.NullPointerException: Location is required.

Das ist eben das was ich vermutet habe. Die FXML kann nicht gefunden werden. Ich habe es mir so angewohnt, auch wenn der Controller relativ zur FXML liegt den kompletten Package Pfad mit anzugeben


Hier wäre es dann
Code:
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("/program/fxmlScenes/statisticsScene.fxml")));
}

Übrigens so wie ich es kenne schreibt man package namen komplett klein.

Grüße
lam
 

Hendrik-HP

Mitglied
Es klappt! Tatsächlich es klappt. 1000 Dank! :D

Hier mein funktionierender Code von lam_tr:
Java:
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("/program/fxmlScenes/statisticScene.fxml")));
}

Tatsächlich musste ich den Path ab meinem program Ordner angeben (kleines Wort, große Wirkung). Nun tauscht er den Center Part der BorderPane aus. Allerdings ist mir aufgefallen, das ich die "Startseite" neu designen muss. Ich habe im Moment die Buttonleisten (BorderPane left und top) INKL dem Grid im Center in einer Datei. Wie schon gedacht muss ich den anfänglichen Inhalt des Centers (GridPane mit den 4 Chart-Controls) seperat aus einer extra FXML Datei initialisieren denn beim Zurückwechseln werden mir die Buttons doppelt überlagert da sie ja mit in der FXML Datei liegen. Kein Problem, ich weiß ja jetzt wie es geht und worauf ich achten muss :cool:
Der eine Großgeschriebene Ordner ist jetzt auch klein geschrieben.

Danke an alle und eure Mühe ;)
 

lam_tr

Top Contributor
Es klappt! Tatsächlich es klappt. 1000 Dank! :D

Hier mein funktionierender Code von lam_tr:
Java:
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("/program/fxmlScenes/statisticsScene.fxml")));
}

Tatsächlich musste ich den Path ab meinem program Ordner angeben (kleines Wort, große Wirkung). Nun tauscht er den Center Part der BorderPane aus. Allerdings ist mir aufgefallen, das ich die "Startseite" neu designen muss. Ich habe im Moment die Buttonleisten INKL dem Grid im Center in einer Datei. Wie schon gedacht muss ich den anfänglichen Inhalt des Centers (GridPane mit den 4 Chart-Controls) seperat initialisieren denn beim Zurückwechseln werden mir die Buttons doppelt überlagert da sie ja mit in der FXML Datei liegen.
Der eine Großgeschriebene Ordner ist jetzt auch klein geschrieben.

Danke an alle und eure Mühe ;)
An sich kannst du auch ein StackPane benutzen, der die erste und die zweite Pane enthält. Beim Button klick, soll die zweite nach vorne gebracht werden
Code:
pane2.toFront();
und wenn du die erst haben willst analog dazu
Code:
pane1.toFront();

Code:
stackpane.getChildren().add(pane1);
stackpane.getChildren().add(pane2);
borderpane.setCenter(stackpane);

anstatt immer nur das Center zu setzen.

Grüße
lam
 

Hendrik-HP

Mitglied
Ja das ist mal ein klasse Tip!
Hab es auch gerade mal mit zwei TestLabel und Button ausprobiert. Mir wird nur leider auch das Label des ersten Grids unter dem Zweiten angezeigt (sichtbar). Wie kriege ich das noch weg? Hab es mal mit pane1.setVisible(true) getestet hat leider nicht geklappt.

Zur Not bleibe ich erst noch beim Center Wechsel damit ich einfach mal was funktionierendes fertig kriege. Ist vielleicht nicht ganz "sauber" aber zum Lernen reicht das denke ich.
 

lam_tr

Top Contributor
Ja das ist mal ein klasse Tip!
Hab es auch gerade mal mit zwei TestLabel und Button ausprobiert. Mir wird nur leider auch das Label des ersten Grids unter dem Zweiten angezeigt (sichtbar). Wie kriege ich das noch weg? Hab es mal mit pane1.setVisible(true) getestet hat leider nicht geklappt.

Zur Not bleibe ich erst noch beim Center Wechsel damit ich einfach mal was funktionierendes fertig kriege. Ist vielleicht nicht ganz "sauber" aber zum Lernen reicht das denke ich.
Du muss jede Pane mit Background color setzen. Das kannst du hiermit erreichen pane.setStyle("-fx-background-color: white");
 

mrBrown

Super-Moderator
Mitarbeiter
Hier mein funktionierender Code von lam_tr:
Java:
@FXML
void btnBookingsAction(ActionEvent event) throws IOException{
    borderPane.setCenter(FXMLLoader.load(getClass().getResource("/program/fxmlScenes/statisticScene.fxml")));
}

Tatsächlich musste ich den Path ab meinem program Ordner angeben (kleines Wort, große Wirkung).

Wenn die aktuell Klasse in dem Package program.fxmlScenes liegt, sind

Java:
getClass().getResource("/program/fxmlScenes/statisticScene.fxml")
und
Java:
getClass().getResource("statisticScene.fxml")
äquivalent.
Ich würde irgendwo anders noch 'nen Fehler vermuten, irgendwas z.B. nicht neu gebaut o.ä.


BTW: statt getClass() sollte man immer direkt die Klasse nutzen, also z.B. MainSceneController.class. this.getClass kann sich ändern, zB wenn das Framework Subklassen on the fly erstellt, womit das ganze potentiell bricht (JavaFX macht das afaik aber nicht, oder?).
 

Hendrik-HP

Mitglied
@lam_tr:
es hat natürlich mit CSS funktioniert. Jetzt wird nichts überlagert. Danke :D

@mrBrown:
ja, alle Klassen und FXML Files sind in einem Package. Auch nichts verschoben oder umbenannt, auch nicht über Refactor. Alles im Package erstellt. Deswegen ja das komische, das Fenster ohne Problem auch mit diesem (kurzen) Aufruf geöffnet werden. Subklassen hab ich so keine. Den Code für die getClass werde ich mir einprägen :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
L JavaFX GUI mit JavaFX. Scene Builder source code? AWT, Swing, JavaFX & SWT 6
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 2
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 3
N JavaFX TreeTable Scene Builder AWT, Swing, JavaFX & SWT 8
H JavaFx - Scene Builder 2.0 - Classpath AWT, Swing, JavaFX & SWT 2
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
I JavaFX-Scene-Überlagerung/Wechsel mit pausieren der anderen Scene AWT, Swing, JavaFX & SWT 0
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
A JavaFX JavaFX images per Drag&Drop verschieben AWT, Swing, JavaFX & SWT 1
Juelin Javafx hängt sich auf AWT, Swing, JavaFX & SWT 31
Juelin StringGrid in SceneBuilder und javaFX AWT, Swing, JavaFX & SWT 3
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 38
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
melaniemueller Taschenrechner JavaFX AWT, Swing, JavaFX & SWT 4
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4
M Zufallsgenerator bei JavaFx AWT, Swing, JavaFX & SWT 1
N Label Schriftart Ändern javafx AWT, Swing, JavaFX & SWT 2
L JavaFX JavaFX, MVVM und SceneBuilder AWT, Swing, JavaFX & SWT 4
S JavaFx Album AWT, Swing, JavaFX & SWT 137
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
J JavaFX - Included FXML - Entfernen feststellen AWT, Swing, JavaFX & SWT 2
J JavaFX JavaFX/ Taskmenu / UML Klassendiagramm AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben