Folgen Sie mit JavaFX vom Wurzelknoten zum unteren Knoten ~ Ich kenne die Route ~

Ich erstelle derzeit eine App mit JavaFX, muss aber jetzt Knoten (Komponenten) dynamisch entfernen oder hinzufügen. Es gibt jedoch fast keine Informationen, die dem Knoten vom Wurzelknoten zum unteren Knoten folgen könnten. Daher werden wir die Methode durch Ausprobieren beschreiben. (Im Moment werde ich nur die Komponenten auflisten, die ich überprüft habe.)

Umgebung OS : macOS X Catalina Integrierte Entwicklungsumgebung: Eclipse 2019-12 Java : AdoptOpenJDK 11.0.5 JavaFX : 11.0.2 SceneBuilder : 11.0

NodeTree


1:AnchorPane ← Wurzelknoten ①
2: ┣━━━ MenuBar
3: ┣━┳━ AnchorPane ②
4: ┃ ┗━┳━ SplitPane ←Horizontal(Links und rechts geteilt) ③
5: ┃   ┣━━━ AnchorPane
6: ┃   ┗━━━ PieChart ④
7: ┗━━━ AnchorPane

Folgen Sie den Knoten in der Reihenfolge ① ⇢ ② ⇢ ⇢ ③ ⇢.

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: }

Beachten Sie, dass Sie beim Versuch, einen untergeordneten Knoten von SplitPane abzurufen, ein ObservableList <?> Type object mit getItems () wie in Zeile 5 erhalten. In diesem Beispiel wird im Objekt "ObservableList <?> Type" das 0. Element auf "NodeTree ②AnchorPane" und das 1. Element auf "PieChart" gesetzt. Deshalb wird ol.get (1) in der 7. Zeile von sample.java ausgeführt.

Wenn der übergeordnete Knoten von PieChart ein Container wie AnchorPane ist, wird das gezeichnete Diagramm nicht entsprechend der Größe des Fensters skaliert. Daher wird das Kreisdiagramm direkt unter dem geteilten Bereich platziert.

Ein weiterer Ort, der erwischt werden könnte, ist "ScrollPane". Unter der Annahme, dass der untergeordnete Knoten von ScrollPane AnchorPane ist, lautet die Erfassungsmethode von AnchorPane wie folgt.

sample2.java


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

Das ist vorerst alles. Auch wenn es notwendig wird, während der Entwicklung zu untersuchen, werde ich es hinzufügen.

Es dient auch als eigenes Memorandum, aber ich hoffe, es hilft allen.

Recommended Posts

Folgen Sie mit JavaFX vom Wurzelknoten zum unteren Knoten ~ Ich kenne die Route ~
Ich wollte die JavaFX-Programmierung mit dem Spring Framework vereinfachen
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen
Ich möchte mit Firestore von Rails spielen
[Java] Ich möchte die Differenz zum Datum berechnen
Tokoro habe ich in der Migration von Wicket 7 auf 8 umgeschrieben
Ich möchte die Antwort der Janken-App wissen
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...
Ich möchte den Dunkelmodus mit der SWT-App verwenden
Ich möchte mit Java8 StreamAPI redu () einen anderen Typ als das Eingabeelement zurückgeben.
Ich möchte den Inhalt von Assets in der mit capistrano erstellten Umgebung von Grund auf neu erstellen
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Was ich mit der Redmine REST API süchtig gemacht habe
Ich möchte den Startbefehl mit Docker-Compose an Postgres übergeben.
Ich habe versucht, das Problem der "mehrstufigen Auswahl" mit Ruby zu lösen
Ich möchte mit Kotlin und Java zum vorherigen Bildschirm zurückkehren!
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Ich habe versucht, das Paiza-Kampagnenproblem "Herausforderung von Phantomdieb 813" zu lösen.
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen