JavaFX Scene wechseln unter FX

Lacritz

Mitglied
Heyho liebe Java'ler,

ich arbeite mich derzeitig in JavaFX ein und versuche relativ banale Dinge zu programmieren , verstehe aber derzeitig die Funktionsweise von FX nicht.

Derzeitig ist mein Problem ,dass ich 1 Menü habe das beim Klick auf "Spiel Starten" ein weiteres Menü mit "Singleplayer " und "Multiplayer" öffnen soll, hierbei funktioniert aber der scene wechseln nicht.

Java:
package team;

import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.BorderPane;


public class Menu extends Application {

	@Override
	public void start(Stage primaryStage) {

		// Showing Menu

		try {

			/*
			 * Gets StyleSheets of MapSource.fxml (generated with JavaFX Scene
			 * Builder 20
			 */

			/* Overwritten by "Parent root = [...]" */
			// BorderPane root = new BorderPane();

			Parent rootOne = FXMLLoader.load(getClass().getResource(
					"menuSource.fxml"));
			Parent rootTwo = FXMLLoader.load(getClass().getResource(
					"menuStartSource.fxml"));

			Scene menu = new Scene(rootOne, 500, 400);
			Scene menuStart = new Scene(rootTwo, 500, 400);

			if (MenuController.szene  == 0) {
				primaryStage.setScene(menu);
			} else if (MenuController.szene  == 1) {
				primaryStage.setScene(menuStart);
			} else {
				primaryStage.setScene(menuStart);
			}

			// Showing the actual scene
			primaryStage.show();

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		launch(args);
	}

}

Java:
package team;

import javafx.fxml.FXML;
import javafx.scene.control.Button;

public class MenuController {
    static int szene;

	@FXML
	Button StartGame;

	@FXML
	Button Options;

	@FXML
	Button ExitGame;

	@FXML
	Button Singleplayer;

	@FXML
	Button Multiplayer;

	@FXML
	Button Exit;

	/*
	 * szene: 0 = Menu 1 = StartGame 2 = Options 3 = Exit 4 = SingleplayerStart
	 * 5 = MultiplayerStart
	 */

	@FXML
	protected void buttonPressedMenu() {
		szene = 0;
	}

	@FXML
	protected void buttonPressedStartGame() {
		szene = 1;
	}

	@FXML
	protected void buttonPressedOptions() {
		szene = 2;
	}

	@FXML
	protected void buttonPressedExitGame() {
		szene = 3;
		System.out.print("SYSTEM TERMINATED");
		System.exit(0);
	}

	@FXML
	protected void buttonPressedSingleplayer() {
		szene = 4;
	}

	@FXML
	protected void buttonPressedMultiplayer() {
		szene = 5;
	}
}

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

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

<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="team14.MenuController">
   <children>
      <GridPane layoutX="-1.0" layoutY="-1.0" prefHeight="186.0" prefWidth="309.0">
        <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="10.0" prefWidth="30.0" />
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="135.0" minWidth="10.0" prefWidth="111.0" />
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="194.0" minWidth="0.0" prefWidth="27.0" />
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="182.0" minWidth="10.0" prefWidth="121.0" />
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="130.0" minWidth="10.0" prefWidth="30.0" />
        </columnConstraints>
        <rowConstraints>
            <RowConstraints maxHeight="60.0" minHeight="10.0" prefHeight="31.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="60.0" minHeight="10.0" prefHeight="31.0" vgrow="SOMETIMES" />
          <RowConstraints maxHeight="31.0" minHeight="0.0" prefHeight="29.0" vgrow="SOMETIMES" />
          <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Button mnemonicParsing="false" onAction="#buttonPressedMultiplayer" prefHeight="35.0" prefWidth="117.0" text="Multiplayer" GridPane.columnIndex="3" GridPane.rowIndex="1" />
            <Button mnemonicParsing="false" onAction="#buttonPressedSingleplayer" prefHeight="33.0" prefWidth="115.0" text="Singleplayer" GridPane.columnIndex="1" GridPane.rowIndex="1" />
            <Button alignment="CENTER" mnemonicParsing="false" onAction="#buttonPressedMenu" prefHeight="25.0" prefWidth="85.0" text="Back" GridPane.columnIndex="3" GridPane.halignment="CENTER" GridPane.rowIndex="3" GridPane.valignment="CENTER" />
         </children>
      </GridPane>
   </children>
</AnchorPane>

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

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

<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="team14.MenuController">
   <children>
      <GridPane layoutX="-1.0" prefHeight="369.0" prefWidth="494.0">
        <columnConstraints>
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="116.0" minWidth="10.0" prefWidth="100.0" />
            <ColumnConstraints hgrow="SOMETIMES" maxWidth="274.0" minWidth="10.0" prefWidth="269.0" />
          <ColumnConstraints hgrow="SOMETIMES" maxWidth="110.0" minWidth="0.0" prefWidth="67.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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
            <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
        </rowConstraints>
         <children>
            <Button mnemonicParsing="false" onAction="#buttonPressedStartGame" prefHeight="48.0" prefWidth="299.0" text="Start Game" GridPane.columnIndex="1" GridPane.rowIndex="1">
               <font>
                  <Font size="14.0" />
               </font></Button>
            <Button mnemonicParsing="false" onAction="#buttonPressedOptions" prefHeight="48.0" prefWidth="302.0" text="Options" GridPane.columnIndex="1" GridPane.rowIndex="2">
               <font>
                  <Font size="14.0" />
               </font></Button>
            <Button mnemonicParsing="false" onAction="#buttonPressedExitGame" prefHeight="48.0" prefWidth="298.0" text="Exit Game" GridPane.columnIndex="1" GridPane.rowIndex="3">
               <font>
                  <Font size="14.0" />
               </font></Button>
         </children>
      </GridPane>
   </children>
</AnchorPane>

Es ist derzeitig also wie folgt aufgebaut: Wird auf "Start Game" geklickt wird ein Integer Wert quasi als Leitwert der Szene auf 1 gesetzt , welches dann in der Start Methode das alles wechseln sollte.

Hoffe ihr könnt mir helfen..

Mit freundlichen Grüßen
Lacritz
 

Major_Sauce

Bekanntes Mitglied
Habe mir jetzt nicht den ganzen Code durchgelesen, aber schon mal primaryStage.setScene(singleplayer) oder ähnliches Versucht ?

mfg Major_Sauce
 

dzim

Top Contributor
TL;DR

Sorry. Zu viel Kram... Aber von dem was ich sehe, denke ich, dass du einen etwas zu komplexen Ansatz verfolgst. Warum ein kompletter Szenenwechsel? Warum nicht einfach die Nodes auf Scene X austauschen.
Kurz: Leg dir ein weiteres Root-Layout (FXML) an, dass nur eine BorderPane oder so besitzt und dein UI-Wechsel tauscht einfach nur den Center dieser Pane aus. Weitaus schneller und "schmerzfreier"! :)

Grüsse
 

Leon1507

Mitglied
Hallo dzim,

Genau an dem Punkt bin ich gerade. Ich möchte in meiner BorderPane lediglich den Center austauschen. Jedoch verstehe ich nicht wie ich ich erstens die verschiedenen Ansichten im Center im Scene Builder programmieren muss und wie ich den Center anschließend austausche. Kannst du mir erklären, wie ich das realisieren kann?
Vielen Dank!
 
G

Gelöschtes Mitglied 65838

Gast
warum die ganze szene wechseln ?

der button der den "szene" wechsel machen sollte ruft auf

event.getTarget().getScene().setRoot(FXMLLoader(newsviewblabla))

im zweifelsfall selber programmieren
 
G

Gelöschtes Mitglied 65838

Gast
Hallo dzim,

Genau an dem Punkt bin ich gerade. Ich möchte in meiner BorderPane lediglich den Center austauschen. Jedoch verstehe ich nicht wie ich ich erstens die verschiedenen Ansichten im Center im Scene Builder programmieren muss und wie ich den Center anschließend austausche. Kannst du mir erklären, wie ich das realisieren kann?
Vielen Dank!
wenn der button geklickt wird machst du einen fxmlloader und castest es in einen node und setzt den node in die borderpane center
außerdem wo hast du diesen thread ausgegraben ??
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Scene wechseln über ManuItem AWT, Swing, JavaFX & SWT 7
H JavaFX Probleme Beim Wechseln der scene als .fxml AWT, Swing, JavaFX & SWT 7
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
B Scene Builder Textfeld Begrenzen AWT, Swing, JavaFX & SWT 3
Tippster JavaFX Scene neu berechnen lassen AWT, Swing, JavaFX & SWT 5
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
N setOnKeyPressed ohne Scene AWT, Swing, JavaFX & SWT 2
G JavaFX Scene ausdrucken nicht möglich, Seite leer AWT, Swing, JavaFX & SWT 5
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
W Nullpointer Exception beim übertragen von Daten von Scene zu Scene AWT, Swing, JavaFX & SWT 6
W Aufrufen einer bestimmten Scene mit if-Bedingung AWT, Swing, JavaFX & SWT 4
izoards Scene Builder vs. reality..... AWT, Swing, JavaFX & SWT 8
H JavaFX JavaFX - Scene Builder - BorderPane AWT, Swing, JavaFX & SWT 23
T Scene-Wechsel manchmal weiss AWT, Swing, JavaFX & SWT 3
temi JavaFX Mehrere Views mit Stage.setScene() oder mit Scene.setRoot()? AWT, Swing, JavaFX & SWT 7
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 0
S Scene Builder Fehlermeldung (Anfängerprobleme) AWT, Swing, JavaFX & SWT 8
L JavaFX AnchorPane an die Größe der Scene oder Window binden? AWT, Swing, JavaFX & SWT 3
M error: package javafx.scene.web is not visible import javafx.scene.web.*; AWT, Swing, JavaFX & SWT 16
R JavaFX Scene Builder Grundsätzliches AWT, Swing, JavaFX & SWT 6
S JavaFX Unterschiede zwischen Scene Builder 2.0 und der ausgeführten App AWT, Swing, JavaFX & SWT 17
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
S JavaFX Scene öffnet sich nicht AWT, Swing, JavaFX & SWT 3
B JavaFx Scene Builder Problem AWT, Swing, JavaFX & SWT 2
D Canvas oder scene graph? AWT, Swing, JavaFX & SWT 16
FRI3ND JavaFX: Wie kann ich einer Scene Argumente übergeben? AWT, Swing, JavaFX & SWT 14
R Größe von Scene und stage an grid anpassen AWT, Swing, JavaFX & SWT 4
I Zweite Scene aufrufen AWT, Swing, JavaFX & SWT 4
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
B JavaFX Grundlegende Verständnisfrage JavaFX<->Scene Builder AWT, Swing, JavaFX & SWT 12
D Gluon Scene Builder Custom AWT, Swing, JavaFX & SWT 0
R Scene speichern AWT, Swing, JavaFX & SWT 7
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
L JavaFX GUI mit JavaFX. Scene Builder source code? AWT, Swing, JavaFX & SWT 6
O JavaFX Aktualisierung der Scene AWT, Swing, JavaFX & SWT 1
U JavaFX Wechsel der Scene nach betätigen eines Button 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
J JavaFX Scene - Buttonklick abwarten AWT, Swing, JavaFX & SWT 4
D javafx.scene.control.TreeView als dropdown Menü AWT, Swing, JavaFX & SWT 6
M JavaFX Scene wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
n00b4u JavaFX Scene-Builder Ressourcengrab? AWT, Swing, JavaFX & SWT 0
I Scene Builder kann .fxml nicht mehr laden AWT, Swing, JavaFX & SWT 3
javampir Java FX Scene Management AWT, Swing, JavaFX & SWT 1
boscho87 JavaFX Variabeln an neue Scene übergeben AWT, Swing, JavaFX & SWT 0
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
L JavaFX Horizontale Linie zur Scene binding AWT, Swing, JavaFX & SWT 3
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
M JavaFX Wo finde ich den Scene Builder? AWT, Swing, JavaFX & SWT 3
A JavaFX Scene Builder eigene Klasse hinzufügen AWT, Swing, JavaFX & SWT 2
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 2
F JavaFX Scene Builder AWT, Swing, JavaFX & SWT 3
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
D JavaFX Scene Builder 2.0 einfügen einer CheckBoxListCell AWT, Swing, JavaFX & SWT 0
M JavaFX Fenstersteuerung in scene builder AWT, Swing, JavaFX & SWT 2
B JavaFX Problem bei Kamera / Group, gesamte Scene bewegt sich mit AWT, Swing, JavaFX & SWT 0
N JavaFX TreeTable Scene Builder AWT, Swing, JavaFX & SWT 8
V kann ich in einer Klasse stage und scene deklarieren, aber in anderen Klassen Inhalte hinzufügen ? AWT, Swing, JavaFX & SWT 5
F GUI Einstieg (Scene Builder) AWT, Swing, JavaFX & SWT 3
H JavaFx - Scene Builder 2.0 - Classpath AWT, Swing, JavaFX & SWT 2
J JavaFX Variable an neue Scene übergeben AWT, Swing, JavaFX & SWT 8
A JavaFX Eigene Komponenten im Scene Builder AWT, Swing, JavaFX & SWT 0
M JFX8 Mixed 2D and 3D, Scene Subscene incorrect drawing 3ds-file AWT, Swing, JavaFX & SWT 6
I JavaFX - Pane wechseln über 2. Controller AWT, Swing, JavaFX & SWT 5
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
CptK JPanels wechseln AWT, Swing, JavaFX & SWT 2
J splitpane - Wechseln auf anderen Split erkennen AWT, Swing, JavaFX & SWT 11
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
A Inhalt wechseln bei Klick auf Label AWT, Swing, JavaFX & SWT 8
J Tableview - kann man mit Enter die Zellen wechseln AWT, Swing, JavaFX & SWT 1
P Zwischen verschiedenen Panels wechseln AWT, Swing, JavaFX & SWT 3
Ksanatos Swing Bild (.jpg) einlesen und per Button wechseln AWT, Swing, JavaFX & SWT 9
M JavaFX JRXML Content wechseln AWT, Swing, JavaFX & SWT 3
H JavaFX Kriege fehler beim Fenster wechseln AWT, Swing, JavaFX & SWT 7
P Swing Panels Wechseln AWT, Swing, JavaFX & SWT 9
G Menübar anklicken und Inhalt entsprechend wechseln AWT, Swing, JavaFX & SWT 4
A JButton soll durch anklicken die Farbe wechseln AWT, Swing, JavaFX & SWT 8
D Zwischen Null-Layouts wechseln AWT, Swing, JavaFX & SWT 2
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
T Durch klicken eines Buttons Klasse wechseln AWT, Swing, JavaFX & SWT 2
J Fensterinhalt bei Klick auf Menüitem wechseln AWT, Swing, JavaFX & SWT 1
T Tab per Code wechseln? AWT, Swing, JavaFX & SWT 3
A BorderLayout "Center" Inhalt wechseln AWT, Swing, JavaFX & SWT 1
V RadioButton aktivieren/deaktivieren; Zustand abfragen und wechseln AWT, Swing, JavaFX & SWT 2
E JavaFX fxml files wechseln AWT, Swing, JavaFX & SWT 4
S Swing, Button benutzen zum Hintergrund wechseln AWT, Swing, JavaFX & SWT 3
A combobox automatisch in ein textfeld wechseln AWT, Swing, JavaFX & SWT 3
bluerob JComponenten verschieben sich bei Fenster wechseln AWT, Swing, JavaFX & SWT 3
A KeyListener Button wechseln & Programm beenden AWT, Swing, JavaFX & SWT 4
S Swing JTabbedPane: Nur nach ButtonClick und nicht nach Click auf Tab ins nächste Tab wechseln AWT, Swing, JavaFX & SWT 2
Jagson Swing Von JDialog zu anderem JDialog wechseln AWT, Swing, JavaFX & SWT 2
M SWT Images bei Toggle Button wechseln AWT, Swing, JavaFX & SWT 3
X zwischen 2 JPanels "elegant" wechseln AWT, Swing, JavaFX & SWT 3
B Swing Locale wechseln, nachdem UIManager schon initialisiert ist AWT, Swing, JavaFX & SWT 5
B Panels wechseln auf Knopfdruck AWT, Swing, JavaFX & SWT 17

Ähnliche Java Themen

Neue Themen


Oben