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