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 :

projet JavaFX, imbriquer des Layouts


Sujet :

JavaFX

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut projet JavaFX, imbriquer des Layouts
    Bonjour,

    Dans le cadre d'un projet en javaFX, je dois créer un écran ou board pour un jeux(Blokus). Je dois pour cela imbriquer des layouts différents. Pas de soucis tant que tout cela se faisait dans une seule classe projet extends Application.

    Maintenant je dois séparer tous mes layouts dans des classes séparées. Et là je ne comprends pas comment relier mes classes. Je ne trouve rien sur le net qui peut m'aider.

    Nom : BlokusBoard.jpg
Affichages : 611
Taille : 92,4 Ko

    Donc mon root est VBox.
    Dans le root j'ai un MenuBar(appelé MenuBlokus) que je dois imbriquer. Pour cela j'ai créé une nouvelle classe javaFX:


    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
    package View;
     
     
    import javafx.scene.control.Menu;
    import javafx.scene.control.MenuBar;
    import javafx.scene.control.MenuItem;
     
    /**
     *
     * @author Administrator
     */
    public class MenuBlokus extends Blokus{
     
     
        final Menu menu1 = new Menu("File");
        final MenuItem subMenu1 = new MenuItem("Save");
        final MenuItem subMenu2 = new MenuItem("Print");
        final Menu menu2 = new Menu("Tools");
        final MenuItem subMenu3 = new MenuItem("Clear");
        final MenuItem subMenu4=new MenuItem("OFF");
     
        public void menu(){
        MenuBar menu=new MenuBar();
        menu.getMenus().addAll(menu1,menu2);
        menu1.getItems().addAll(subMenu1, subMenu2);
     
     
        }

    Le code de ma mainClasse Blokus est:


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    package View;
     
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.StackPane;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
     
     
    /**
     *
     * @author Administrator
     */
    public class Blokus extends Application {
        private MenuBlokus menu;
     
        @Override
        public void start(Stage primaryStage) {
     
            //Création de la Scène
            VBox root = new VBox();
            root.getChildren().add(MenuBlokus);  //cela ne fonctionne pas!
     
            Scene scene = new Scene(root,1000,750);
            primaryStage.setTitle("Blokus");
            primaryStage.setScene(scene);
            primaryStage.show();
        }
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            launch(args);
        }
     
    }

    Est-ce que dois bien étendre ma classe MenuBlokus par Blokus( est-ce que celui-ci est bien le Stage?).

    Merci à tous
    Attila

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    Salut,

    en attendant les réponses des experts, pourquoi ne pas utilisée le fxml?
    Il me semble que le fx:include est exactement ce que tu veux non?

    de plus, plutôt qu'utilisé un Vbox en root, le BorderPane semble plus adéquat non? (menuBar en top, Vbox en left, gridPane en center et Hbox en bottom) car la pour ton menu de gauche et le gridPane tu devrait ajouter un Hbox intermédiaire pour pouvoir les mettre sur la même ligne.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour Wazalop,

    Pour info, nous venons d'aborder JavaFx depuis 2 semaines et nous n'avons pas encore aborder les FXML. Jai vu sur le net que c'est très présent avec JavaFX, mais nous n'avons pas encore touché à cela.

    Pour les Layouts, c'est ce qui est proposé par le prof, mais effectivement, je m'étais posé la question, si un HBow était utile pour englober le VBox central et le GridPane. Tu confirmes ma question.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2013
    Messages : 20
    Points : 23
    Points
    23
    Par défaut
    salut,

    ok dommage alors ^^,

    j'ai jamais fait de javaFX sans le fxml donc je ne suis pas sur des détails, mais ton menuBlokus dans ton start() est null, faut le crée non (new MenuBlokus())? (et pense a changer le nom de ta fonction d'initialisation de ton menuBlokus pour quelle soit le constructeur de la classe)

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Bon le FXML c'est optionnel mais ca permet d'utiliser SceneBuilder qui est quand même un bon editeur WYSIWYG (ce qu'on voit c'est ce qu'on obtient). Et pour les réfractaires il est aussi toujours possible de coder le FXML a la main.
    Mais bon, après coder le layout a la main dans le code Java ca marche aussi de toute manière.

    Tu peux regarder dans cet article pour voir quelques bases sur comment découper une UI : 4.1. VBox and HBox
    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

  6. #6
    Membre chevronné
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    Décembre 2010
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 545
    Points : 2 084
    Points
    2 084
    Par défaut
    A ce que j'ai compris ton problème c'est sur la logique d'imbriquer des classes qui représentent différents layouts. Pour ce que tu fais là d’hériter d'une classe qui hérite qui hérite de la classe Application je ne crois pas que c'est la bonne méthode, car cela ne te servira en rien, il n y a qu'une seule classe qui doit hériter Application par application JavaFX.

    Mais si j'ai bien compris ce que tu veux faire, tu peux créer une classe qui hérite de n'importe qu'elle layouts que tu veux. Et le composer par ce que tu veux comme propriétés ou d'autres objet de classes qui héritent d'autres layouts. Et dans le constructeur ou autre méthode, tu peux ajouter les ses attributs à ses propres enfants par la méthode super.getChildren().add/All... et les autres méthodes d'ajout en utilisant les propriétés des layouts, donc comme ça si tu instancie un objet de cette classe ou autre cette dans la méthode start() de l'application et tu peux ajouter les objets parmi les nœuds du conteneur racine de la scène. Je ne vois rien de miracle dedans.

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Désolé de répondre si tard.
    J'ai résolu en parti mon problème.
    Wazalop, tu as confirmé ma question du manque d'un layout (Hbox), bouye, merci pour le lien.
    la.lune, oui, mon problème était qu'une seule classe puisse appelé toutes les autres classes-layout. Finalement j'ai compris que c'était un peu comme Swing (public class menuBlokus extends MenuBar{}). Et puis savoir ou mettre le .getChildren().add(), me posait problème également.

    Finalement c'est résolu

    Merci à tous

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Hériter d'une classe est une manière de faire qui est facile a appréhender. Après, tu peux aussi éviter pour des raison de pattern ou d'architecture ou encore de sécurité de le faire en utilisant le patron monteur, ça évitera a des parties tierces de potentiellement taper dans l'API de ta classe mère pour mettre le boxon dans ton app. Mais bon mieux vaut commencer par le commencement et bien apprendre comment fonctionnent les choses
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/05/2010, 15h05
  2. Projet Delphi avec des port COM1
    Par Miksou dans le forum Langage
    Réponses: 2
    Dernier message: 23/11/2005, 15h36
  3. Réponses: 5
    Dernier message: 24/08/2005, 11h21
  4. Imbriquer des logic:iterate
    Par lalou33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 16/06/2004, 10h31
  5. Réponses: 12
    Dernier message: 18/03/2004, 15h09

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