JavaFX mise en page qui s'adapte avec les parents
Je suis en utilisant JavaFX dans un projet au lieu de Balancer en raison de l'amélioration du multimédia, webviewer et la possibilité d'utiliser des effets visuels. Cependant, ce que j'ai appris de ce que j'ai trouvé sur le web (http://docs.oracle.com/javafx/2/layout/jfxpub-layout.htm et d'autres) est que JavaFX gestionnaires de disposition l'accent sur l'accroissement de la taille de la mère en fonction de la taille du contenu, alors que Swing met l'accent sur de mise à l'échelle le contenu selon le parent, au moins d'après l' Layout
utilisé.
Droit maintenant, je suis en utilisant un Accordion
avec certains TitledPane
enfants. L'un d'eux contient un GridPane
pour la simple raison c'est le meilleur moyen que je connaisse pour émuler un GridLayout
(comme je l'ai appris de ma précédente question ici: JavaFX disposition équivalente à GridLayout). Je veux avoir le TitledPane
'contenu divisé en 2 lignes et 1 colonne, chaque ligne avec 50% de la hauteur de l'espace disponible dans la TitledPane
(mise à l'échelle avec la Stage
ou Scene
), l'équivalent de ce qu'est un GridLayout(2,1)
à l'intérieur d'un BorderLayout.CENTER
permettrait de réaliser. Pour cela, j'ai ajouté un GridPane
avec 2 RowConstraint
s à l'aide de setPercentHeight(50)
et 1 ColumnConstraint
avec setPercentWidth(100)
. Cependant, j'ai remarqué que le contenu est de mise à l'échelle avec la grille correctement, mais la grille n'est pas de prendre toute la place disponible dans le TitledPane
(parce qu'apparemment, il n'agit pas comme un BorderPane
's centre). J'ai aussi essayé avec setMaxWidth
pour rendre le contenu de l'échelle avec le parent, mais il ne semble pas fonctionner soit (comme il est dit ici: JavaFX: Comment faire pour que mon composant personnalisé utiliser tout l'espace disponible du parent de mise en page?). Et même si il serait, ai-je besoin pour définir la largeur maximale de CHAQUE descendant dans ma éléments de l'INTERFACE utilisateur de l'arborescence d'avoir l'ensemble de leur échelle?
De toute façon, personne ne sait comment faire un TitledPane
avec 2 espaces en sous eachother que l'échelle de la titledpane taille?
OriginalL'auteur Warkst | 2013-10-04
Vous devez vous connecter pour publier un commentaire.
En fait, votre gridpane est de plus en plus de remplir l'ensemble de ses parent.
Considérons le code ci-dessous, j'ai ajouté un fond de couleur (rouge) pour la gridpane à des fins de débogage.
Si vous exécutez ce code, le gridpane comblera toutes ses parent (vérifier la couleur rouge s'étend sur tout le titledpane contenu).
Toutefois, le contenu de la gridpane ne se remplit pas toute la colonne. Si vous essayez de redimensionner la fenêtre, vous verrez que les textareas ne sont pas en train de changer dans la largeur avec la gridpane.
Pour corriger cela, vous devez dire à la première colonne de la gridpane à croître avec le gridpane lui-même.
La façon de le faire est d'ajouter la contrainte suivante:
setPercentWidth également de travailler, au lieu de setHGrow(Priorité.TOUJOURS). Ils seront à la fois de faire la même chose dans le cas où vous utilisez une seule colonne. Dans le cas où vous avez plusieurs colonnes, ils fonctionnent différemment. Parce que setHGrow vais essayer de dire la mise en page de colonne de la gridpane besoin de grandir pour remplir le non réclamés de l'espace disponible.
setFillWidth(true) est pour le contenu de la colonne, la colonne elle-même. La valeur par défaut est vrai que je pense. Si vous n'avez pas besoin de la définir. Ce que cela signifie, c'est de savoir si les enfants de la colonne sera ajustée pour remplir toute la largeur de la colonne.
La profondeur ne setFillWidth aller? E. g. si j'ajoute une VBox avec des Boutons dans cette colonne, je devine la VBox de l'espace, mais les Boutons de besoins d'être dit à l'échelle individuellement à l'aide de setMaxWidth(Double.MAX_VALUE)?
Si vous êtes coincé , et souhaitez forcer le contenu de croître au sein de son parent, il est recommandé de mettre le contenu dans un AnchorPane.
OriginalL'auteur Rasha