Ajouter dropShadow seulement à la frontière de la grille volet de JavaFx 2.2
Souhaitez ajouter de l'ombre portée seulement à la frontière de volet Grille pas à l'intérieur des éléments d'enfant
ici, c'est l'image de l'écran montrant l'effet.
OriginalL'auteur Zahid Khan | 2014-01-03
Vous devez vous connecter pour publier un commentaire.
Utiliser un StackPane et le lieu de votre GridPane.
Style de votre StackPane avec CSS pour appliquer une couleur d'arrière-plan, les encarts et une ombre portée.
Voir Ombre portée dans une nudité Volet! JAVAFX pour quelques exemples de CSS.
Voici un petit exemple d'application autonome (utilisation de Java 8b120 sur OS X 10.9), pour démontrer l'effet:
Aborder des questions supplémentaires
Pas, cela pourrait être fait dans le code au lieu de CSS, en utilisant le DropShadow effet.
Parce que la définition d'un arrière-plan donne un net avantage pour le nœud vers lequel l'effet d'ombre est appliquée.
Il n'y a pas de réelles différences dans l'ombre de traitement entre un nœud racine ou conteneur imbriqué. L'effet d'ombre portée dépend de l'élément ayant l'effet est appliqué a un transparent (ou null) arrière-plan ou pas. Notez bien que l'un nœud racine généralement de remplir un stade. Donc, si le nœud racine a un arrière-plan transparent de couleur et sans encarts sont fournis, puis l'ombre sur le nœud racine ne sera pas vu comme il va tomber en dehors de la zone visible de la scène.
Je vais vous proposer une deviner ce qui se passe. Je pense que l'effet d'ombre portée est fait, c'est le calcul de la forme extérieure du nœud, puis d'appliquer l'ombre à elle. Lorsque ce nœud a une couleur d'arrière-plan, puis vous verrez l'ombre du nœud contexte, qui est ce qui est vu dans l'image fournie. Si le nœud n'a pas de couleur de fond, puis les bords de l'nœuds sont calculés à partir des nœuds enfants, de sorte que tous les enfants reçoivent des ombres.
Maintenant ce qui s'est passé, c'est qu'entre JavaFX 2.2 lorsque la question a été posée et JavaFX 8, le thème par défaut pour JavaFX déplacé à partir de la mer Caspienne à Modène. Avec la mer Caspienne volets n'ont pas une couleur de fond par défaut. Cependant, pour Modène, les volets ont une légère off-blanc couleur d'arrière-plan par défaut. Cela signifie que l'affiche originale du texte flou à l'intérieur de la grille volet ne se produira pas par défaut en Java 8, comme le GridPane aura un arrière-plan qui est à l'ombre, au lieu de l'intérieur de texte occultée. Cela peut être vérifié via l'exécution du programme suivant et en variant le commentaire sur la ligne pour le réglage de la feuille de style à la mer Caspienne:
Ajout d'un nouvel échantillon avec une solution plus simple.
Les CSS sont la seule option? Pourquoi a-t-il? Pourquoi ne
DropShadow
fonctionnent différemment selon si elle est appliquée sur un nœud de racine ou un conteneur imbriqué?OriginalL'auteur jewelsea
jewelsea la réponse est correcte, mais veuillez noter qu'il ne fonctionne pas lorsque
ou
Cela peut être vraiment frustrant si vous essayez d'appliquer l'ombre portée à l' (Pile)Volet de l'ensemble de la zone de délimitation de la zone et non de l'enfant contenu! La fixation d'un non-transparent couleur d'arrière-plan fonctionne, mais si vous avez de nombreux éléments côte à côte ou l'un sur l'autre (c'est à dire rapprochés), vous pouvez voir les indésirables chevauchement des effets avec les ombres portées.
OriginalL'auteur Joe