JavaFX Inhalt eines SplitPane's durch Menü-Auswahl ändern?

config_de

Mitglied
Hallo Leute,

ich versuche mich gerade in JavaFX einzuarbeiten. Ich bin ein kürzlich ausgelernter FIAE und fange hier gerade bei 0 an. Basic-Java Kenntnisse sind da, mit JavaFX beschäftige ich mich seit gestern.

Momentan habe ich eine kleine Login-Scene.
Nach der Username/Passwort-Eingabe wechsel ich über den Anmelde-Button auf die folgende Scene:

V0SaWTl.png


AnchorPane > vertikales SplitPane > horizontales SplitPane. Und hier und da ein paar kleine VBox'en.

Links habe ich mein Menü worüber ich nun den angezeigten Inhalt im unteren rechten Bereich ändern möchte.

Wie setzt man das am besten um? Die komplette Scene zu wechseln erscheint mir etwas übertrieben. In einem anderem Tutorial habe ich 2 FXMLs gebaut und die eine dann in die andere quasi intergriert. Das eine war BorderPane und das andere AnchorPane. Das konnte ich da einfach mit ~ BorderPane.setCenter(xxx) oder so machen.

Aber wie mache ich das denn hier?
Ich weiß gerade gar nicht so richtig wonach ich überhaupt suchen soll 😕

Ich hatte gestern irgendetwas vom CardLayout gelesen, aber das scheint wohl eher Richtung Swing/AWT oder so gewesen zu sein.

Gibt es da eine Lösung oder muss ich wirklich jedes mal die komplette Scene wechseln? Ein Schlagwort mit dem ich suchen kann reicht mir schon 🙂

Achso und ich benutze InelliJ und den Scene Builder.

config
 
Entspricht Cardlayout in Swing => StackPane (Stappel!) in JavaFx. Benutze Node.toFront() oder toBack().
 
Zuletzt bearbeitet:
Danke für die Antwort, es war aber nicht ganz wonach ich gesucht habe 🙂
Mittlerweile bin ich von SplitPane weg und habe einfach ein Pane im Pane gebaut.
Den "Wechsel" des Inhalts vollziehe ich einfach mit diesen Methoden:

Pane.getChildren().clear();
Pane.getChildren().addAll(x);

Keine Ahnung ob das jetzt perfekt ist, aber mein gewünschtes Ziel ist erstmal erreicht 😎
 
@config.de: es gibt mehrere Wege nach Rome. StackPane ist selbst bereits eine Pane, wo mehere Pane als Stappel auf einannder liegen können. Was Du machst in Prinzip das gleiche, aber warum mus man das Rad neu finden, wenn es bereit da ist. Ausserdem versuche mal die Grösse deines Haupt Pane zu verändern => Passen die Chidren Pane automatisch daran?
 
Zuletzt bearbeitet:
Okay dann habe ich das mit dem Stackpane noch nicht richtig kapiert. Und nein, in meiner App passt sich gerade nur wenig automatisch so an wie es soll (eigentlich nur das Hintergrundbild 😀)

Ich merk schon. Erstmal befasse ich mich jetzt mit den ganzen Layouts richtig.
Da muss ich wohl noch ein paar Tutorials wälzen. Die anfängliche Lernkurve hat es schon irgendwie in sich 🙄

Danke für die Hilfe 🙂
 
Also ich habe mein Pane jetzt durch das StackPane ausgetauscht.

Mein Projekt ist jetzt so aufgebaut:

Hauptansicht.fxml (Ein AnchorPane in dem das StackPane und einige VBoxen enthalten sind, quasi der grobe Rahmen)
Menüpunkt1-XY.fxml's (enthalten AnchorPanes mit jeweils verschiedenen Inhalten..Tabellen, Labels,Buttons etc., diese lade ich dann in das StackPane)
Controller, Main etc.

Sollte ich jetzt alle AnchorPanes dem StackPane hinzufügen? Oder ist es sinnvoller nach wie vor immer nur eines hineinzuladen und den StackPane dann immer wieder zu leeren. Ich vermute eher ersteres, sonst hättest du mir nicht zum StackPane geraten. Aber macht das keine Probleme hinsichtlich der Performance? Wäre es nicht ressourcensparender immer nur das eine gebrauchte Pane zu laden anstatt alle auf einmal? Oder ist das eher zu vernachlässigen
 
Ich würde alle entsprechende Panen in den StackPane einbetteln lassen. Für jeden Menu-(oder Buton-)Select wird die entsprechende Pane mit toFront() angezeigt.
Eine Gui an sich ist kein Problem sowohl wegen Resourcen noch Performence. Man soll nur nicht Logik nicht in eine endlose Schleife geraten oder Gui zum tausend Mal neuzeichen lassen. Wenn man kapiert, was alles im Hintergrund läuft, meine Erfahrungen nach ist Java genau so schnell wie jede andere Sprache (z.B. C++). Es gibt keine bessere Sprache, es gibt nur schlechte Programmierer., egal in welchen Sprachen.
Ich würde empfehlen, diese Seite anzuschauen:
http://o7planning.org/en/10623/javafx-tutorial-for-beginners
dort gukst Du erstmal die Animationen an, um schnell einen Überblick alles, was in Fx gibt. Bei der Anwendung kann man später die Code (in Oracle-(Open-)JDK) genauer schauen, analysieren.
 
Zuletzt bearbeitet:
Okay danke für die Antwort, ich schau mir das heute Abend mal näher an. Und danke für den Tutorial-Link.
Von guten Tutorials kann ich gerade gar nicht genug bekommen 😀
 
Wenn man kapiert, was alles im Hintergrund läuft, meine Erfahrungen nach ist Java genau so schnell wie jede andere Sprache (z.B. C++).
Die Aussage für sich alleine ist falsch. Aber was richtig ist, dass es bestimmte Anwendungsdomänen gibt wo es völlig egal ist ob du Java oder C++ nimmst. Es gibt aber umgekehrt welche bei denen du mit Java auf keinen grünen Zweig kommst.
 
@JStein52 man muss einfach bedenken, das mit Java (und generell vielen Sprachen) keine "Echtzeit" umgesetzt werden kann. Ich denke jedoch, die Performance von Java ist nicht ausschliesslich von der Domäne, sondern primär vom Können des Programmierers abhängig (und ich nehme für mich nicht in Anspruch, immer sehr performance-orientiert zu programmieren - ich kann jedoch, wenn ich wirklich will 😀).
 

Neue Themen


Zurück
Oben