Suivez du nœud racine au nœud inférieur avec JavaFX ~ Je connais l'itinéraire ~

Je crée actuellement une application en utilisant JavaFX, mais je dois maintenant supprimer ou ajouter dynamiquement des nœuds (composants). Cependant, il n'y a presque aucune information pour suivre le nœud du nœud racine au nœud inférieur, nous allons donc décrire la méthode par essais et erreurs. (Pour l'instant, je ne listerai que les composants que j'ai vérifiés)

environnement OS : macOS X Catalina Environnement de développement intégré: Eclipse 2019-12 Java : AdoptOpenJDK 11.0.5 JavaFX : 11.0.2 SceneBuilder : 11.0

NodeTree


1:AnchorPane ← Nœud racine ①
2: ┣━━━ MenuBar
3: ┣━┳━ AnchorPane ②
4: ┃ ┗━┳━ SplitPane ←Horizontal(Séparation gauche et droite) ③
5: ┃   ┣━━━ AnchorPane
6: ┃   ┗━━━ PieChart ④
7: ┗━━━ AnchorPane

Suivez les nœuds dans l'ordre de ① ⇢ ② ⇢ ③ ⇢ ④.

sample.java


 1: public Scene setPieChart(Stage stage) {
 2:		Scene scene = stage.getScene();
 3:		AnchorPane ap2 = (AnchorPane)this.scene.getRoot(); ①
 4:		AnchorPane ap3 = (AnchorPane)ap2.getChildren().get(1); ②
 5:		SplitPane spHorizontal = (SplitPane)ap3.getChildren().get(0); ③
 6:		ObservableList<?> ol = (ObservableList<?>) spHorizontal.getItems(); ③
 7:		PieChart pieChart = (PieChart)ol.get(1); ④
 8:
 9:		return scene;
10: }

Notez que si vous essayez d'obtenir un nœud enfant de SplitPane, vous obtiendrez un objet de type ʻObservableList <?> Avec getItems () ʻ comme à la ligne 5. Dans cet exemple, dans l'objet ʻObservableList <?> Type, le 0e élément est défini sur NodeTree ②AnchorPane et le premier élément sur PieChart. C'est pourquoi ol.get (1) est fait sur la 7ème ligne de sample.java.

Une autre chose à noter à propos de l'opération est que si le nœud parent de PieChart est un conteneur tel que AnchorPane, le graphique dessiné ne sera pas mis à l'échelle en fonction du redimensionnement de la fenêtre. Par conséquent, le graphique à secteurs est placé directement sous le volet divisé.

Un autre endroit qui pourrait être pris est ScrollPane. Plus précisément, en supposant que le nœud enfant de ScrollPane est AnchorPane, la méthode d'acquisition d'AnchorPane est la suivante.

sample2.java


 1:	AnchorPane anchorPane = (AnchorPane) scrollPane.contentProperty().get();

C'est tout pour le moment. Aussi, s'il devient nécessaire d'enquêter pendant le développement, je l'ajouterai.

Il sert également de mémorandum à moi, mais j'espère que cela aidera tout le monde.

Recommended Posts

Suivez du nœud racine au nœud inférieur avec JavaFX ~ Je connais l'itinéraire ~
Je voulais faciliter la programmation JavaFX avec Spring Framework
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2
Je veux jouer avec Firestore de Rails
[Java] Je souhaite calculer la différence par rapport à la date
Tokoro j'ai réécrit dans la migration de Wicket 7 à 8
Je veux connaître la réponse de l'application Janken
[Rails] Je ne sais pas comment utiliser le modèle ...
Je souhaite utiliser le mode sombre avec l'application SWT
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()
Je veux recréer le contenu des actifs à partir de zéro dans l'environnement construit avec capistrano
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
Ce à quoi j'étais accro avec l'API REST Redmine
Je veux passer la commande de démarrage à postgres avec docker-compose.
J'ai essayé de résoudre le problème de la "sélection multi-étapes" avec Ruby
Je veux revenir à l'écran précédent avec kotlin et java!
J'ai essayé de créer un environnement de serveur UML Plant avec Docker
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
J'ai essayé de vérifier le fonctionnement du serveur gRPC avec grpcurl
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
[Java] Je veux effectuer distinctement avec la clé dans l'objet
J'ai essayé de résoudre le problème de la campagne paiza "Challenge from Phantom Thief 813"
[Android] Je souhaite obtenir l'auditeur à partir du bouton de ListView