JavaFX – setVisible verbirgt das Element, ordnet aber benachbarte Knoten nicht neu an
Lesezeit: 2 Minuten
Gillardo
Wenn ich in JavaFX eine Szene mit 2 VBox Elemente und jedes VBox hat mehrere Label drin.
Wenn ich die Spitze setze VBox zu unsichtbarwarum tut die Unterseite VBoxnicht aufsteigen die Szene, wo die Spitze VBox war ?
Das VBox ist unsichtbar aber ich würde erwarten, dass die anderen Objekte an seine Stelle rücken.
Ich verwende FXML, um meine Steuerelemente zu laden.
Denn das erste VBox ist nur unsichtbar und nicht removed von seinem Elternteil.
– ItachiUchiha
17. Februar 2015 um 9:06 Uhr
Ob versteckte Knoten Platz beanspruchen oder nicht, ist in der Regel die Entscheidung des Layouts
– Kleopatra
17. Februar 2015 um 10:47 Uhr
eckig
Node.setVisible(boolean) schaltet nur den Sichtbarkeitsstatus von a um Node.
Ausschließen a Node Aus den Berechnungen des übergeordneten Layouts müssen Sie zusätzlich den verwalteten Zustand durch Aufrufen festlegen Node.setManaged(false).
Wenn Sie möchten, dass der verwaltete Zustand neben der Sichtbarkeit automatisch aktualisiert wird, können Sie eine Bindung verwenden, wie @jewelsea betonte: node.managedProperty().bind(node.visibleProperty());
Eine Bindung funktioniert auch, z. node.managedProperty().bind(node.visibleProperty());
– Juwelensee
17. Februar 2015 um 21:46 Uhr
Da es unsichtbar ist, bewegt es sich nicht nach oben. Sie müssen es mit etwas wie:
// remove
vbox.getChildren().remove(...)
Sobald Sie das Element entfernt haben, das Sie unsichtbar machen möchten, sollte das andere Element nach oben verschoben werden.
AFAIK, das Manipulieren des Szenendiagramms ist teurer als das Setzen von “sichtbar” auf “false”.
– Puce
14. August 2017 um 21:38 Uhr
Nicolescu Ionut Lucian
Versuchen Sie, setVisible und managedProperty zusammen zu verwenden. Hier ist ein Beispiel:
nichts neues im vergleich zur antwort mit den meisten upvotes, ist da 🙂
– Kleopatra
11. November 2019 um 12:08 Uhr
jetzt klarer!
– Noor Hossain
28. September 2021 um 20:17 Uhr
Anstatt die vbox zu verstecken, sollten Sie Löschen es von den Kindern und wenn Sie es noch einmal zeigen möchten hinzufügen die vbox wieder.
Wenn ich einen Knoten ein- und ausblenden möchte, ändere ich die Größe des Knotens auf 0, wenn ich ihn ausblenden möchte. Auf diese Weise nimmt der Knoten keinen Platz ein, da er für den Benutzer nicht sichtbar ist. Wenn ich also möchte, dass er sichtbar ist, passe ich die Größe erneut an, damit er sichtbar ist.
12839500cookie-checkJavaFX – setVisible verbirgt das Element, ordnet aber benachbarte Knoten nicht neu anyes
Denn das erste
VBox
ist nur unsichtbar und nichtremoved
von seinem Elternteil.– ItachiUchiha
17. Februar 2015 um 9:06 Uhr
Ob versteckte Knoten Platz beanspruchen oder nicht, ist in der Regel die Entscheidung des Layouts
– Kleopatra
17. Februar 2015 um 10:47 Uhr