Frage von karinili, 101

JavaFX: Inhalt einer Scene verändern?

Hallo,

ich darf für die Uni aktuell ein Spiel programmieren – mit JavaFX für die GUI. Ich habe Textfiles bekommen, aus denen ich mir die Spieloberflächen generieren soll. Das habe ich auch schon gemacht und funktioniert alles einwandfrei. Nun bin ich dabei eine grafische Auswahl zwischen den Oberflächen zu implementieren. Meine angedachte Lösung ist via Scenes. Sprich, ich wähle in Scene1 das zu lesende Textfile und nach der Auswahl wechsle ich in Scene2, wo mir das ausgewählte dann angezeigt werden soll.

Daran scheitert es aber, da die Scenes ja gleichzeitig und beim Starten des Programms generiert werden – sprich die Ansicht der Scene2 eigentlich schon steht, wenn ich in Scene1 mein File wähle. Ich verzweifle.

Gibt es da irgendein Workaround, dass ich die Ansicht erst beim Wechsel generiere?

Freue mich über Antworten.

Expertenantwort
von KnusperPudding, Community-Experte für Java, 78

Also einen Workaround braucht es dafür eigentlich nicht. - Du kannst das folgendermaßen lösen.

Du hast ja eine Klasse die von Application ableitet und musst dafür start(Stage stage) implementieren. - Und genau da knüpfst du an:

Lege in deiner Klasse eine Instanz-Variable an, in der du dir stage speicherst - also in der methode start(Stage stage).

Anschließend kannst du eigentlich immer via stage#setScene() wechseln.

Hier ein Beispiel womit es etwas deutlicher werden sollte:

http://pastebin.com/K2R3MqYA


PS: Mit "Files" meinst du aber nicht zufällig FXML?

Kommentar von karinili ,

Danke. Du rettest mich gerade! Manchmal sieht man den Wald vor lauter Bäumen nicht.

Und nein, leider keine FXML sondern simple Textfiles (um ganz deutlich zu sein, die Fileendung ist .txt).

Kommentar von KnusperPudding ,

Kein Problem.  - Und ich kenne das.. Als ich von Swing auf FX gewechselt hab, war ich auch erstmal überfordert, bin aber mittlerweile absolut überzeugt.

Wegen FXML fragte ich, da man mit FXML die Gestaltung der einzelnen Scenes sehr angenehm anpassen und gestalten kann und noch leichter an eine Controller-Klasse binden. - Um eine FXML-Scene an ein Stage zu binden hätte ich beispiele gehabt, aber dann spielt das ja aktuell keine so große Rolle für dich.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten