Une fois exécuté, l'écran 1 s'ouvre. L'écran 1 a un bouton pour passer à l'écran 2 et un bouton pour fermer la fenêtre. L'écran 2 a un bouton pour passer à l'écran 1.
Créez un projet dans Eclipse.
screenTrance ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (1) └ src ・ ・ ・ ・ ・ ・ ・ ・ (2) └ pkg ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ (3) ├ Main.java ・ ・ ・ ・ ・ ・ ・ ・ ・ (4) ├ MainController.java ・ ・ ・ ・ (5) ├ Écran.java ・ ・ ・ ・ ・ ・ ・ ・ (6) ├ SubController.java ・ ・ ・ ・ ・ (7) ├ mainScreen.fxml ・ ・ ・ ・ ・ ・ (8) └ subScreen.fxml ・ ・ ・ ・ ・ ・ ・ (9)
(1) Projet à créer (2) Répertoire du fichier source créé arbitrairement lors de la création d'un projet (3) Package à créer (4) Fichier source (décrit dans le chapitre suivant), écran initial (écran 1) démarrage (5) Fichier source (décrit dans le chapitre suivant), contrôleur sur l'écran 1 (6) Fichier source (décrit dans le chapitre suivant), démarrage de l'écran lors de la transition d'écran (7) Fichier source (décrit dans le chapitre suivant), contrôleur sur l'écran 2 (8) Fichier source (décrit dans le chapitre suivant, créé par SceneBuilder), contenu de l'écran 1 (9) Fichier source (décrit dans le chapitre suivant, créé par SceneBuilder), contenu de l'écran 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 {
//Chargement des graphiques de scène depuis FXML
FXMLLoader loader = new FXMLLoader(getClass().getResource("mainScreen.fxml"));
Parent root = loader.load();
//Création d'une scène avec le nœud racine du jeu de graphes de scènes
Scene scene = new Scene(root, 600, 400);
//Mise en scène de la scène
primaryStage.setScene(scene);
primaryStage.setTitle("Écran 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(); //Fermer l'écran
}
@FXML
void OnclickedNextButton(ActionEvent event) {
nextButton.getScene().getWindow().hide(); //Fermer l'écran
Screen screen = new Screen(); //Ouvrir l'écran(Appel de méthode)Préparation de
screen.transitionScreen("subScreen.fxml", "Écran 2"); //Ouvrir l'écran
}
@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 {
//Chargement des graphiques de scène depuis FXML
FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlName));
Parent root = loader.load();
//Création d'une scène avec le nœud racine du jeu de graphes de scènes
Scene scene = new Scene(root, 600, 400);
//Mise en scène de la scène
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(); //Fermer l'écran
Screen screen = new Screen(); //Ouvrir l'écran(Appel de méthode)Préparation de
screen.transitionScreen("MainScreen.fxml", "Écran 1"); //Ouvrir l'écran
}
@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="Aller à l'écran 2" />
<Button fx:id="closeButton" layoutX="255.0" layoutY="337.0" mnemonicParsing="false" onAction="#OnclickedCloseButton" prefHeight="33.0" prefWidth="91.0" text="Fermer" />
<Label alignment="CENTER" layoutX="255.0" layoutY="23.0" prefHeight="33.0" prefWidth="91.0" text="Écran 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="Aller à l'écran 1" />
<Label alignment="CENTER" layoutX="255.0" layoutY="23.0" prefHeight="33.0" prefWidth="91.0" text="Écran 2">
<font>
<Font size="20.0" />
</font>
</Label>
</children>
</Pane>
Recommended Posts