Accordéon JavaFX avec plusieurs volets ouverts
Est-il possible d'avoir un accordéon, avec plus de 1 ouvrez le volet en JavaFX?
source d'informationauteur sight
Vous devez vous connecter pour publier un commentaire.
Est-il possible d'avoir un accordéon, avec plus de 1 ouvrez le volet en JavaFX?
source d'informationauteur sight
Vous devez vous connecter pour publier un commentaire.
Non, un JavaFX 2.2 Accordéon ne peut avoir qu'un volet ouvert à la fois.
J'ai créé une demande d'amélioration (JDK-8090554 StackedTitledPanes de contrôle) pour une fonctionnalité qui vous permet d'ouvrir plus d'un volet à l'accordéon, à la fois, cependant, la demande de fonctionnalité a actuellement pas été mis en œuvre.
En attendant, vous pouvez construire un contrôle similaire vous-même très facilement en créant de multiples TitledPane les instances et les placer dans un VBox.
Si nécessaire, vous pouvez enrouler le
VBox
contenant vos volets dans une ScrollPanede sorte que l'ensemble du contenu de votre élargi volets peuvent être utiles que si leur région déborde de la surface disponible.J'ai créé un la solution de l'échantillon (les icônes sont linkware à partir de: http://www.fasticon.com).
J'ai eu des exigences légèrement différentes
Bien que dans mon cas, je n'étais pas en mesure de répondre à tous les 3. et le test 2., J'ai été en mesure de venir avec le correctif suivant:
1) l'Utilisation d'un composant ScrollPane, avec une VBox à l'intérieur, avec TitledWindows à l'intérieur.
2) assurez-vous que votre TitledPanes sont mis à VBox.grandir="PARFOIS" .
3) Ajouter une VBox comme le dernier élément et réglez VBox.vgrow="TOUJOURS" - ce qui pousse le TitledPanes jusqu'à leur taille minimale. Tout le monde a fourni des exemples de Code, si vous souhaitez utiliser le fxml, ou ne voulez pas utiliser de Java, en utilisant seulement les éléments directement fonctionne tout aussi bien (généré avec SceneBuilder):
4) Bien que cela ne vous obtenir des boîtes empilées qui agrandir/réduire de façon indépendante l'un de l'autre, cela ne résout pas le problème où vous avez des boîtes qui ne sont pas redimensionner correctement à leur contenu (par exemple si vous avez une Liste intégrés comme dans l'exemple ci-dessus), et vous avez donc maintenant pour faire défiler un peu quand il y a abondance de l'écran de l'immobilier à gauche. La solution? Un peu de Java est nécessaire.
Pour appliquer ce correctif, nous avons d'abord lier la TitledPane de
maxHeightProperty()
à l'extérieur VBox estheightProperty()
:L'on attribue à chaque volet du
expandedProperty()
et dynamique de lier et de délier laprefHeighProperty()
:}
Si on nous montre, nous demandons à être aussi grand que la VBox, si nous ne sommes pas, nous demandons à être aussi petite que possible. L'avantage de faire les choses de cette manière, c'est que la mise en page alors automatiquement calculé la hauteur disponible sur la base du nombre de actuellement affichée à l'TitledPanes - ce qui conduit à exactement le comportement que nous voulons.
Je aller plus dans les détails ici:
http://sebastianaudet.com/blog/playing-with-javafx/