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 :

Maximiser la taille d'un composant en fonction de la taille du composant parent


Sujet :

JavaFX

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 57
    Points : 93
    Points
    93
    Par défaut Maximiser la taille d'un composant en fonction de la taille du composant parent
    Bonjour, la question tient dans le titre. Après un certain temps passé en recherches infructueuses, je me tourne vers vous pour savoir comment on peut s'y prendre. Voilà un exemple assez explicite de mon soucis :

    Nom : Problème.png
Affichages : 1959
Taille : 62,3 Ko

    Et une portion du code associé :

    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
     
    VBox root              = new VBox();
    MenuBar menuBar = setMenuBar();        
    VBox header         = setHeader(menuBar);
     
    HBox center          = new HBox();
    ToolBar tb            = new ContextToolBar(strings.getObservableProperty("tools"),110,new Button("Coucobhu"),new Button("Cou"),new Button("Coou"),new Button("Coucdrou"),new         Button("Coucoggeu"),new Button("Cojou"));
    tb.setOrientation(Orientation.VERTICAL);
    center.getChildren().addAll(tb,new ListExplorer());		
     
    root.getChildren().addAll(header,center);
     
    Scene scene = new Scene(root,1100,600,Color.WHITESMOKE);
    primaryStage.setTitle("Raytracer Reloaded");
    primaryStage.setScene(scene);
    primaryStage.show();
    Merci d'avance si vous avez des idées de comment faire, j'ai vraiment essayé plein de choses sans succès !

  2. #2
    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
    Quel est le problème ?

    Si c'est center qui ne se redimensionne pas verticalement, essaie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    center.setMaxHeight(Double.MAX_VALUE);
    VBox.setVGrow(center, Priority.ALWAYS);
    EDIT - et pour le redimensionnement horizontal, probablement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    root.setFillWidth(true);
    center.setMaxWidth(Double.MAX_VALUE);
    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 régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 57
    Points : 93
    Points
    93
    Par défaut
    Merci pour ta réponse ! En vertical, ça marche même sans le setMaxHeight. En horizontal ça ne fonctionne pas

    EDIT : bon, je n'aime pas trop cette solution mais ça donne l'effet voulu

    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
     
    VBox root              = new VBox();
    MenuBar menuBar = setMenuBar();        
    VBox header         = setHeader(menuBar);
     
    HBox center          = new HBox();
    ToolBar tb            = new ContextToolBar(strings.getObservableProperty("tools"),110,
    				   new Button("Outil 1"),new Button("Outil 2"),new Button("Outil 3"),
    				    new Button("Outil avec un nom très long"));
    tb.setOrientation(Orientation.VERTICAL);
    ListExplorer listExplorer = new ListExplorer();
    listExplorer.setPrefWidth(2*PREFERRED_WIDTH);
    center.getChildren().addAll(tb,listExplorer);	
     
    VBox.setVgrow(center,Priority.ALWAYS);		
    root.getChildren().addAll(header,center);
     
    Scene scene = new Scene(root,PREFERRED_WIDTH,PREFERRED_HEIGHT,Color.WHITESMOKE);
    primaryStage.setTitle("Raytracer Reloaded");
    primaryStage.setScene(scene);
    primaryStage.show();
    Je suis un peu surpris qu'on doive bidouiller autant pour faire un truc si simple =(

  4. #4
    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
    Ah oui j'avais lu en diagonale, center est une HBox donc ça marche direct. Ben c'est simple, il fait utiliser les méthodes équivalentes sur le contenu de la HBox (setHGrow() et setFillHeight() et changer les tailles max pour les controles qui ne se redimensionnent pas.

    De tout manière une bonne méthode pour voir ce qui ne change pas correctement de taille c'est de donner des bordures aux contrôles via les CSS (pour ceux qui sont des régions : -fx-border-color: <une couleur>;) comme ça on cerne mieux ceux qui ont des soucis et ceux qui fonctionnent correctement.
    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

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2014
    Messages : 57
    Points : 93
    Points
    93
    Par défaut
    J'avais pas pensé à l'astuce des bordures, merci bien Par contre non, setFillHeight et setHGrow étaient inutiles car je voulais que le ListExplorer, composant héritant de HBox, occupe toute la largeur d'une HBox le contenant. J'ai ma solution bancale de setPrefWidth désormais, je vais la garder même si c'est moche.

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

Discussions similaires

  1. [XL-2007] adapter la taille d'une image en fonction de la taille de l'ecran
    Par rayba89 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/09/2014, 18h34
  2. Réponses: 2
    Dernier message: 12/03/2010, 09h56
  3. Réponses: 5
    Dernier message: 11/06/2007, 23h05
  4. Taille d'un tableau en fonction de la taille de la fenetre
    Par Cow-b dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/08/2006, 17h58

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