Bei der Ausführung wird Bildschirm 1 geöffnet. Bildschirm 1 verfügt über eine Schaltfläche zum Übergang zu Bildschirm 2 und eine Schaltfläche zum Schließen des Fensters. Bildschirm 2 verfügt über eine Schaltfläche zum Übergang zu Bildschirm 1.
Erstellen Sie ein Projekt in Eclipse.
screenTrance 1 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 1 1 (1) 2 src ・ ・ ・ ・ ・ ・ ・ 2 (2) 3 k k k ・ ・ ・ ・ ・ 3 3 3 (3) ├ Main.java 4 ・ ・ ・ ・ ・ ・ ・ 4 (4) ├ MainController.java 5 ・ ・ ・ (5) ├ Screen.java 6 ・ ・ ・ ・ ・ ・ 6 (6) ├ SubController.java 7 ・ ・ ・ 7 (7) ├ mainScreen.fxml 8 ・ ・ ・ ・ 8 (8) └ subScreen.fxml 9 ・ ・ ・ ・ ・ 9 (9)
(1) Zu erstellendes Projekt (2) Quelldateiverzeichnis, das beim Erstellen eines Projekts willkürlich erstellt wurde (3) Zu erstellendes Paket (4) Quelldatei (im nächsten Kapitel beschrieben), Startbildschirm (Bildschirm 1) wird gestartet (5) Quelldatei (im nächsten Kapitel beschrieben), Controller auf Bildschirm 1 (6) Quelldatei (im nächsten Kapitel beschrieben), Bildschirmstart beim Bildschirmübergang (7) Quelldatei (im nächsten Kapitel beschrieben), Controller auf Bildschirm 2 (8) Quelldatei (beschrieben im nächsten Kapitel, erstellt von SceneBuilder), Inhalt von Bildschirm 1 (9) Quelldatei (beschrieben im nächsten Kapitel, erstellt von SceneBuilder), Inhalt von Bildschirm 2
3.1. Main.java
Main.java
package pkg;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
//Laden von Szenendiagrammen aus FXML
FXMLLoader loader = new FXMLLoader(getClass().getResource("mainScreen.fxml"));
Parent root = loader.load();
//Erstellen einer Szene mit dem Wurzelknoten des Szenendiagrammsatzes
Scene scene = new Scene(root, 600, 400);
//Die Szene auf die Bühne bringen
primaryStage.setScene(scene);
primaryStage.setTitle("Bildschirm 1");
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
3.2. MainController.java
MainController.java
package pkg;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class MainController {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private Button nextButton;
@FXML
private Button closeButton;
@FXML
void OnclickedCloseButton(ActionEvent event) {
closeButton.getScene().getWindow().hide(); //Bildschirm schließen
}
@FXML
void OnclickedNextButton(ActionEvent event) {
nextButton.getScene().getWindow().hide(); //Bildschirm schließen
Screen screen = new Screen(); //Bildschirm öffnen(Methodenaufruf)Vorbereitung von
screen.transitionScreen("subScreen.fxml", "Bildschirm 2"); //Bildschirm öffnen
}
@FXML
void initialize() {
assert nextButton != null : "fx:id=\"nextButton\" was not injected: check your FXML file 'screen.fxml'.";
assert closeButton != null : "fx:id=\"closeButton\" was not injected: check your FXML file 'screen.fxml'.";
}
}
3.3. Screen.java
Screen.java
package pkg;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Screen {
public void transitionScreen(String fxmlName, String fxmlTitle) {
try {
//Laden von Szenendiagrammen aus FXML
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlName));
Parent root = loader.load();
//Erstellen einer Szene mit dem Wurzelknoten des Szenendiagrammsatzes
Scene scene = new Scene(root, 600, 400);
//Die Szene auf die Bühne bringen
Stage stage = new Stage();
stage.setScene(scene);
stage.setTitle(fxmlTitle);
stage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.4. SubController.java
SubController.java
package pkg;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class SubController {
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private Button backButton;
@FXML
void OnclickedBackButton(ActionEvent event) {
backButton.getScene().getWindow().hide(); //Bildschirm schließen
Screen screen = new Screen(); //Bildschirm öffnen(Methodenaufruf)Vorbereitung von
screen.transitionScreen("MainScreen.fxml", "Bildschirm 1"); //Bildschirm öffnen
}
@FXML
void initialize() {
assert backButton != null : "fx:id=\"backButton\" was not injected: check your FXML file 'subScreen.fxml'.";
}
}
3.5. mainScreen.fxml
mainScreen.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pkg.MainController">
<children>
<Button fx:id="nextButton" layoutX="255.0" layoutY="184.0" mnemonicParsing="false" onAction="#OnclickedNextButton" prefHeight="33.0" prefWidth="91.0" text="Gehen Sie zu Bildschirm 2" />
<Button fx:id="closeButton" layoutX="255.0" layoutY="337.0" mnemonicParsing="false" onAction="#OnclickedCloseButton" prefHeight="33.0" prefWidth="91.0" text="schließen" />
<Label alignment="CENTER" layoutX="255.0" layoutY="23.0" prefHeight="33.0" prefWidth="91.0" text="Bildschirm 1">
<font>
<Font size="20.0" />
</font>
</Label>
</children>
</Pane>
3.6. subScreen.fxml
subScreen.java
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="pkg.SubController">
<children>
<Button fx:id="backButton" layoutX="255.0" layoutY="184.0" mnemonicParsing="false" onAction="#OnclickedBackButton" prefHeight="33.0" prefWidth="91.0" text="Gehen Sie zu Bildschirm 1" />
<Label alignment="CENTER" layoutX="255.0" layoutY="23.0" prefHeight="33.0" prefWidth="91.0" text="Bildschirm 2">
<font>
<Font size="20.0" />
</font>
</Label>
</children>
</Pane>
Recommended Posts