Volet contextuel personnalisé JavaFX 2
Le JavaFX 2 sélecteur de couleur a un bouton qui affiche un sélecteur de couleur volet de la sorte:
Je voudrais faire quelque chose de semblable, que je voudrais un volet personnalisé de pop-up lorsque vous cliquez sur le bouton et disparaissent lorsque quelque chose d'autre est cliqué (dans mon cas, quelques vignettes d'image). Quelle serait la meilleure façon d'atteindre cet objectif? Dois-je utiliser un ContextMenu et ajouter un volet à un MenuItem en quelque sorte, ou est-il autre chose que je devrais regarder?
source d'informationauteur Michael Berry | 2012-10-03
Vous devez vous connecter pour publier un commentaire.
C'est un peu difficile à bien faire avec l'actuelle API JavaFX 2.2.
Voici quelques options.
Utiliser un MenuButton avec un jeu graphique dans MenuItem
C'est l'approche adoptée dans Bouton déroulant de la montré ci-dessous'exécutable exemple de code.
Utiliser un PopupControl
Jetez un oeil à la façon dont le composant ColorPicker est-ce à dans les il est code.
ColorPicker s'étend PopupControl. Vous pouvez faire cela, mais pas tous les API nécessaires pour construire votre propre PopupControl est actuellement en public. Donc, pour JavaFX 2.2, vous devez compter sur interne com.soleil des classes qui sont obsolètes et seront remplacés par des javafx.de la scène.classes de contrôle dans le JDK8.
Utiliser un ContextMenu
Donc, je pense que votre idée d'utiliser une "ContextMenu et ajouter un volet à un MenuItem" est probablement la meilleure approche pour l'instant. Vous devriez être en mesure de le faire à l'aide d'un CustomMenuItem ou définition d'un graphique sur un
MenuItem
. LeContextMenu
a nice le positionnement relatif de la logique. UnContextMenu
peut également être déclenchée par un MenuButton.Utiliser un Dialogue Personnalisé
Pour ce faire, l'affichage d'un transparent stade à un endroit par rapport au nœud.
Il y a un exemple de code pour vous aider à démarrer que j'ai temporairement lié ici.
L'exemple de code ne le positionnement relatif sur les côtés de la fenêtre principale, mais vous pouvez le mettre à jour pour effectuer le positionnement par rapport aux côtés d'un nœud donné (comme le ContextMenu de la méthode show).
Utiliser une Vitre
Pour ce faire, créez un StackPane que votre racine de votre fenêtre principale. Placez votre contenu principal volet que le premier nœud dans le StackPane et puis créer un Groupe comme le deuxième nœud dans le stackpane, afin qu'il couche sur le dessus du contenu principal. Normalement, le groupe de tête ne contient rien, mais si vous souhaitez montrer à votre pop-up, le placer dans le groupe de tête et de le traduire dans un lieu par rapport au nœud approprié dans votre contenu principal.
Vous pourriez regarder la façon dont les nœuds d'ancrage dans cette démo sont utilisés pour voir comment cela peut être adaptable à votre contexte.
Il n'y a pas beaucoup de différence de pertinence pour Java 8, en général, les options sont décrites dans ce post, basé sur Java 2.2 fonctionnalités. Java 8 est-ce que ajouter Dialogue et Alerte fonctionnalité, mais ceux qui sont plus ciblées à l'utilisation de boîtes de dialogue avec des frontières, des titres et des boutons plutôt que le type de fonctionnalité souhaitée dans la question. Peut-être que vous pourriez être en mesure de démarrer à partir de la classe de boîte de Dialogue et fortement de le personnaliser pour obtenir quelque chose de proche de ce qui est nécessaire, mais vous êtes probablement mieux de commencer à partir d'une étape vierge ou PopupControl à la place.