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