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 :

[JavaFX] (Débutant) Problème d'affichage d'un menu


Sujet :

JavaFX

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [JavaFX] (Débutant) Problème d'affichage d'un menu
    Bonjour à tous ! j'ai un petit problème pour débuter en JavaFX. Je voudrais afficher un rectangle qui fasse toute la largeur de ma fenêtre et qui s'adapte si on change les dimensions de celle-ci. Une sorte de menu en haut de ma fenêtre. Pour cela j'ai 'bindé' la largeur de mon rectangle avec la largeur de la variable Stage mais la largeur reste à 0 durant l'exécution.

    Voila le code de mon Main.fx :
    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
     
    function run(){
     
       var stage : Stage;
     
       var mainMenu= MainMenu{
                    height: 100;
                    width: bind stage.width
                    backgroundColor: Color.ALICEBLUE
                }
     
       stage = Stage {
       title: "Application"
       scene:
        Scene {
            width: 400
            height: 400
            content : [
                mainMenu
            ]//Content
        }//Scene
       };//Stage
     
    }
    et voici le code de mon menu MainMenu.fx :

    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
     
    public class MainMenu extends CustomNode{
     
        public var width: Number;
        public var height: Number;
        public var backgroundColor : Color;
     
        override public function create(): Node{
     
            return Group{
                content : [
                     Rectangle {
                        y : 0
                        x : 0
                        width: this.width
                        height: this.height
                        fill : this.backgroundColor
                     }// Rectangle
     
                ] // Content
            }// Group
        }
     
    }
    Surement un problème de compréhension. Si vous pouviez me débloquer se serait sympa.
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 874
    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 874
    Points : 22 940
    Points
    22 940
    Billets dans le blog
    53
    Par défaut
    Je dirais à priori normal car si tu as bien bindé ta variable de ta classe MainMenu à la largeur du Stage, tu n'as pas pour autant bindé celle de ton Rectangle à celle de MainMenu (tu aurais pu aussi mettre un on replace sur la variable pour faire cette modification). Donc ton rectangle n'est jamais redimensionné et comme tu n'initialises pas ta variable elle vaut 0.

    PS : comme le Stage peut avoir des bordure (dans le cas d'une fenêtre) et que celle-ci compte dans la largeur et la hauteur, bind plutot sur la largeur de la Scene (la scène est aggrandie automatiquement quand on aggrandi le Stage).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup pour ta réponse. Effectivement, cela règle mon problème .
    Par contre pour être sur d'avoir bien compris, pourrais-tu me confirmer que la fonction create() de mon MainToolBar est appelée lorsque je l'instancie c'est à dire lorsque je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var mainToolBar = MainToolBar {
                    height: 100;
                    width: bind stage.scene.width
                    backgroundColor: Color.ALICEBLUE
       }
    et non pas lorsque je l'ajoute dans le content de ma scene :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    stage = Stage {
       title: "Application"
       scene:
        Scene {
            width: 800
            height: 600
            content : [
                mainToolBar
            ]//Content
        }//Scene
       };//Stage
    Je pensais effectivement que la fonction était appelé lorsqu'on ajoutais MainToolBar à la scene c'est pour cela que j'étais étonné de ne pas voir le rectangle, même si celui-ci n'aurais pas été redimensionné lors de l'agrandissement de la fenêtre.
    Encore merci.

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 874
    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 874
    Points : 22 940
    Points
    22 940
    Billets dans le blog
    53
    Par défaut
    Le noeud existe indépendament de la scène. Son contenu est créé lors de son instanciation.

    Mais lors de ton instanciation précédement ton Rectangle faisait (0, 0), 0 x 0 et donc n'était pas visible.

Discussions similaires

  1. Problème d'affichage d'un menu css sous IE6 et IE7
    Par TomTom71 dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 06/06/2008, 10h27
  2. [SQL] débutante: Problème d'affichage de requete
    Par katie dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 20/09/2006, 23h21
  3. [IE] Problème d'affichage barre de menu
    Par Le Pharaon dans le forum Autres Logiciels
    Réponses: 11
    Dernier message: 23/06/2006, 17h11
  4. problème d'affichage d'un menu sur une image de fond
    Par Nata31 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 23/06/2006, 08h53
  5. [débutant]problèmes d'affichage dans un tableau
    Par Hastur dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 16/08/2005, 13h00

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