IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Exemple complet JavaFX


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut Exemple complet JavaFX
    Bonjour à tous.

    Je galère un peu pour me mettre à javaFX, que je souhaite utiliser pour des applications desktop. Ca a l'air très intéressant mais tous les tutoriels que je trouve me laissent sur ma faim...

    Dans un premier temps, pour comprendre, je voudrais juste un petit exemple comprenant :
    - une scene principale "root" (avec une barre menu et une toolbar avec 2 boutons) comprenant
    - soit une "sous scene" A
    - soit une "sous scene" B
    Les 2 boutons de la scene root servant à appeler soit A soit B.

    Je voudrais aussi pouvoir appeler A à partir d'un bouton de B (et inversement...).
    Je me sers de SceneBuilder et donc de FXML.
    Un tel exemple me servirait sans doute à mieux comprendre les mécanismes de bases de JavaFX et de constituer un squelette d'application.
    Je suis sur que beaucoup se posent des questions...

    Quelqu'un saurait-il m'indiquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Pourquoi des sous-scènes ? Tu comptes faire de la 3D ?

    Sinon on vient de publier la nouvelle FAQ JavaFX, c'est une bonne idée que d'aller jeter un coup d’œil.

    Ensuite, puisque tu as lu des cours et didacticiels, qu'est ce qui te bloque pour implémenter ce que tu demandes ??? Tu n'arrives pas à conceptualiser la chose ?

    1. Une classe application.
    2. Une VBox (le root de la scène) contenant :
      1. Une MenuBar avec le Menu appropriés.
      2. Un BorderPane :
        1. Dans la partie north, une Toolbar contenant :
          1. Un Button A
          2. Un Button B
        2. Dans la partie center, un StackPane contenant :
          • Un AnchorPane qui va être la racine de la partie A, visible uniquement quand on appuie sur A.
          • Un AnchorPane qui va être la racine de la partie B, visible uniquement quand on appuie sur B.


    Tu veux faire ça avec SceneBuilder ? Pas de soucis, il suffit de créer le contenu que je viens d'indiquer, de le charger au démarrage et de l’inclure dans la scène (voir FAQ)... le code pour manipuler le contenu ira dans la classe contrôleur...
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut
    Bonjour, merci pour ta réponse.
    J'ai jeté un œil à la faq sans trouver de réponse à mes questions.
    Je me suis peut être mal exprimé en parlant de "sous-scènes". Je veux simplement changer "l’intérieur" de ma fenêtre en y plaçant A ou B.
    J'ai pensé au stackPane, mais cela m'oblige à y charger tous les contenus ? Pour une appli un peu importante, cela va faire du monde, j'ai peur que ce soit lourd.
    Concernant la structure que tu propose, j'ai essayé une mise en oeuvre. Je n'y suis pas arrivé. Je pense que j'ai du mal à voir comment tout ca s'articule.
    C'est en ca qu'un petit exemple m'aiderai surement.

    Francois

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur projet
    Inscrit en
    Juin 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 48
    Par défaut
    Bonjour,
    Il y a un très bon exemple à l'adresse suivante : https://github.com/acaicedo/JFX-MultiScreen
    Il suffit de télécharger les fichiers sources et de comprendre comment cela fonctionne et comment tout cela interagit. C'est plus complexe que ce que tu recherches, mais cela fonctionne bien. Il te suffira de l'adapter à tes besoins.
    Comme expliqué par bouye, il faut une classe principale qui permet de charger la fenêtre principale qui est constituée d'un fichier fxml et de son contrôleur associé. Dans ce contrôleur, il faut y placer un bouton qui permet de remplacer la scene par un autre fichier fxml.
    Il y a pas mal de sources sur le net qui permettent de comprendre comment switcher d'une scene à l'autre en passant par la commande FXMLLoader.
    Le plus simple est que tu nous expliques ce qui bloque dans ton programme ...
    Pour cela il faut que tu nous en dise plus.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Par défaut Exemple complet JavaFX
    Merci pour cet exemple vraiment intéressant (https://github.com/acaicedo/JFX-MultiScreen explication ici https://blogs.oracle.com/acaicedo/en...ens_in_javafx1).
    Cela répond presque à ce que je veux faire.
    Dans cet exemple, on a screen1, screen2 et screen3. Chaque screen à les boutons pour accéder à un des 2 autres. Parfait.
    Il faudrait juste ques ces 3 screens se mettent dans un "mainScreen" contenant un menu et une barre d'outil et que ce menu ou cette barre d'outil permettent de la même façon de switcher entre les screens.
    Et c'est là que je coince...
    Je ne vois pas du tout comment faire

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur projet
    Inscrit en
    Juin 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur projet
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2014
    Messages : 48
    Par défaut
    Je ne suis pas persuadé que ce soit la meilleure solution, mais tu peux simplement modifier les controllers et les fichiers fxml des différentes fenêtre screen1, screen2 et screen3 pour qu'elle fassent appel à un même menu défini dans un autre controller.

    Bien entendu, il faut définir dans "screen1.fxml" un conteneur de type AnchorPane qui te permette d'inclure la barre de menu au dessus du contenu de la fenêtre.
    Voici un exemple des modifs que j'ai apporté à screen1Controller.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        @FXML
        private AnchorPane menuAnchorPanePane;
     
        /**
         * Initializes the controller class.
         */
        public void initialize(URL url, ResourceBundle rb) { 	
            // Ajout de la barre de menu
        	FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("MenuBar.fxml"));
        	Pane cmdPane;
    		try {
    			cmdPane = (Pane) fxmlLoader.load();
    			menuAnchorPanePane.getChildren().add(cmdPane);
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
     
        }
    Code de screen1.fxml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <AnchorPane id="AnchorPane" minHeight="122.0" prefHeight="220.0" prefWidth="198.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="screensframework.Screen1Controller">
      <children>
          <BorderPane layoutX="1.0" prefHeight="200.0" prefWidth="200.0">
             <center>
              <VBox alignment="CENTER" prefHeight="225.0" prefWidth="200.0" spacing="20.0" BorderPane.alignment="CENTER">
                <children>
                  <Label text="Home Screen">
                    <font>
                      <Font size="18.0" />
                    </font>
                  </Label>
                  <HBox alignment="CENTER" prefHeight="57.0" prefWidth="281.0" spacing="20.0">
                    <children>
                      <Button mnemonicParsing="false" onAction="#goToScreen2" text="Screen2" />
                      <Button mnemonicParsing="false" onAction="#goToScreen3" text="Screen3" />
                    </children>
                  </HBox>
                </children>
                <padding>
                  <Insets />
                </padding>
              </VBox>
             </center>
             <top>
                <AnchorPane fx:id="menuAnchorPanePane" prefHeight="25.0" BorderPane.alignment="CENTER" />
             </top>
          </BorderPane>
      </children>
    </AnchorPane>
    Voici un exemple de code pour le fichier MenuBar.fxml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <?xml version="1.0" encoding="UTF-8"?>
     
    <?import java.lang.*?>
    <?import javafx.scene.control.*?>
    <?import javafx.scene.layout.*?>
    <?import javafx.scene.layout.AnchorPane?>
     
    <AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
       <children>
          <MenuBar prefHeight="25.0" prefWidth="128.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
            <menus>
              <Menu mnemonicParsing="false" text="File">
                <items>
                  <MenuItem mnemonicParsing="false" text="Close" />
                </items>
              </Menu>
              <Menu mnemonicParsing="false" text="Edit">
                <items>
                  <MenuItem mnemonicParsing="false" text="Delete" />
                </items>
              </Menu>
              <Menu mnemonicParsing="false" text="Help">
                <items>
                  <MenuItem mnemonicParsing="false" text="About" />
                </items>
              </Menu>
            </menus>
          </MenuBar>
       </children>
    </AnchorPane>

    le problème que je rencontre avec cette config c'est que je n'arrive pas à étendre la barre de menu sur toute la largeur de la fenêtre...
    En tous cas, je pense que c'est une piste qui peut t'intéresser.

Discussions similaires

  1. exemple complet struts
    Par pigeon11 dans le forum Struts 1
    Réponses: 2
    Dernier message: 11/09/2007, 18h15
  2. Exemple complet d'application PHP ?
    Par schoendo dans le forum Livres
    Réponses: 5
    Dernier message: 19/02/2007, 18h12
  3. [Struts-layout]cherche exemple complet
    Par david06600 dans le forum Struts 1
    Réponses: 3
    Dernier message: 01/09/2006, 11h53
  4. [HSQLDB] Votre avis sur un petit exemple complet...
    Par calogerogigante dans le forum Persistance des données
    Réponses: 8
    Dernier message: 16/05/2006, 08h21
  5. A la recherche d'un exemple complet MCD et script final
    Par Loowann dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 03/03/2005, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo