Meervoudige fxml bestanden laden | Loading multiple fxml files and controllers
| JavaFX ECLIPSE Meervoudige schermen laden | Multple screens (multiple fxml files and controllers) | ||
| Meervoudige FXML bestanden laden | Load multiple FXML files | Cargar varios archivos FXML |
| Code Samples | ||
1: menu.fxml | Scherm1.fxml | Scherm2.fxml
Menu.fxml : <?xml version="1.0" encoding="UTF-8"?>
Scherm1.fxml : <?xml version="1.0" encoding="UTF-8"?> Scherm2.fxml : <?xml version="1.0" encoding="UTF-8"?>
import java.io.IOException; import java.net.URL; import java.util.HashMap; import javafx.application.Application; import javafx.fxml.FXMLLoader; import javafx.fxml.JavaFXBuilderFactory; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.layout.AnchorPane; import javafx.stage.Stage; /** * Belgium : JavaFX : Meerdere fxml-bestanden beheren * English : JavaFX : Managing multiple screens * Español : JavaFX : Gestión de múltiples pantallas * @auteur : pw 22-11-2013 */ public class Start_Schermen_FXMLTest extends Application { public static AnchorPane root = new AnchorPane(); public static HashMap<String, Node> schermen = new HashMap<>(); //public static HashMap<String, Node> screencontrollers = new HashMap<>(); public static void main(String[] args) { Application.launch(args); } @Override public void start(Stage stage) { // Schermen in Hashmap laden // Load the different (fxml files) screens into a Hashmap // Almacenar las pantallas SchermBeheer sc = new SchermBeheer(); sc.laadSchermen("MENU", "Menu.fxml"); sc.laadSchermen("SCHERM2", "Scherm2.fxml"); sc.laadSchermen("SCHERM1", "Scherm1.fxml"); // Laad het basischerm met keuzemenu: // Load the Main screen (menu.fxml) // Cargue la pantalla principal (menu.fxml) FXMLLoader fxmlLoader = new FXMLLoader(); URL url = getClass().getResource("Menu.fxml"); fxmlLoader = new FXMLLoader(); fxmlLoader.setLocation(url); fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory()); try { root = (AnchorPane) fxmlLoader.load(url.openStream()); root.setStyle("-fx-background-color: black;"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } Scene scene = new Scene(root, 550, 600); stage.setTitle("Meervoudige schermen mett eigen controller"); stage.setScene(scene); stage.show(); try { Thread.sleep(1000); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); } sc.laadScherm("MENU", "Menu.fxml"); } }
import java.io.IOException; import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.fxml.JavaFXBuilderFactory; import javafx.scene.layout.AnchorPane; /** * Belgium : JavaFX : Meerdere fxml-bestanden beheren * English : JavaFX : Managing multiple schermen * Español : JavaFX : Gestión de múltiples pantallas * * @auteur : pw 22-11-2013 */ public class SchermBeheer extends AnchorPane implements Initializable { public void laadScherm(String naam, String schermFXML) { if (Start_Schermen_FXMLTest.schermen.get(naam) != null) { // Belgium : oud scherm verwijderen en nieuw scherm toevoegen // English : remove the previous screen and add the new one // Español : borrar la pantalla anterior y agregar el nuevo Start_Schermen_FXMLTest.root.getChildren().clear(); Start_Schermen_FXMLTest.root.getChildren().add(Start_Schermen_FXMLTest.schermen.get(naam)); } else { try { URL url = getClass().getResource(schermFXML); FXMLLoader fxmlLoader = new FXMLLoader(); fxmlLoader.setLocation(url); fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory()); AnchorPane scherm = (AnchorPane) fxmlLoader.load(url .openStream()); Start_Schermen_FXMLTest.root.getChildren().clear(); Start_Schermen_FXMLTest.root.getChildren().add(scherm); } catch (IOException e) { e.printStackTrace(); } } } public void laadSchermen(String naam, String schermFXML) { try { URL url = getClass().getResource(schermFXML); FXMLLoader fxmlLoader = new FXMLLoader(); fxmlLoader.setLocation(url); fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory()); AnchorPane scherm = (AnchorPane) fxmlLoader.load(url.openStream()); fxmlLoader.getController(); // Belgium : Alle schermen opslagen in Hashmap // English : Store all the schermen in a Hashmap // Español : Guarde todas las pantallas en un Hashmap Start_Schermen_FXMLTest.schermen.put(naam, scherm); // FXMLTest.screencontrollers.put(naam, (Node) // fxmlLoader.getController()); } catch (IOException e) { e.printStackTrace(); } } @Override public void initialize(URL url, ResourceBundle rb) { } }
import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.layout.AnchorPane; /** * Belgium : JavaFX : Meerdere fxml-bestanden beheren * English : JavaFX : Managing multiple screens * Español : JavaFX : Gestión de múltiples pantallas * * @auteur : pw 22-11-2013 */ public class MenuController extends AnchorPane implements Initializable { @FXML private void aksie_naarscherm1(ActionEvent event) { System.out.println("Controller Menu"); SchermBeheer sc = new SchermBeheer(); sc.laadScherm("SCHERM1", "Scherm1.fxml"); } @FXML private void aksie_naarscherm2(ActionEvent event) { System.out.println("Menu Controller"); SchermBeheer sc = new SchermBeheer(); sc.laadScherm("SCHERM2", "Scherm2.fxml"); } @Override public void initialize(URL url, ResourceBundle rb) { } }
5: Scherm1Controller.java import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.layout.VBox; /** * Belgium : JavaFX : Meerdere fxml-bestanden beheren * English : JavaFX : Managing multiple screens * Español : JavaFX : Gestión de múltiples pantallas * * @auteur : pw 22-11-2013 */ public class Scherm1Controller extends VBox implements Initializable { @FXML private void aksie_NaarHoofdscherm(ActionEvent event) { System.out.println("Controller Scherm 1"); SchermBeheer sc = new SchermBeheer(); sc.laadScherm("MENU", "Menu.fxml"); } @Override public void initialize(URL url, ResourceBundle rb) { } } 6: Scherm2Controller.java import java.net.URL; import java.util.ResourceBundle; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.layout.VBox; /** * Belgium : JavaFX : Meerdere fxml-bestanden beheren * English : JavaFX : Managing multiple screens * Español : JavaFX : Gestión de múltiples pantallas * * @auteur : pw 22-11-2013 */ public class Scherm2Controller extends VBox implements Initializable { @FXML private void aksie_NaarHoofdscherm(ActionEvent event) { System.out.println("Controller Scherm 2"); SchermBeheer sc = new SchermBeheer(); sc.laadScherm("MENU", "Menu.fxml"); } @Override public void initialize(URL url, ResourceBundle rb) { } }
|
||
| Gebruikte gratis Programmas: | Used Free Programs: | Programmas libres usados: |
| Pics | ||





























