JavaFX – setVisible verbirgt das Element, ordnet aber benachbarte Knoten nicht neu an

Lesezeit: 2 Minuten

Benutzer-Avatar
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 VBox nicht 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


Benutzer-Avatar
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

Benutzer-Avatar
Nicolescu Ionut Lucian

Versuchen Sie, setVisible und managedProperty zusammen zu verwenden. Hier ist ein Beispiel:

myHBox.setVisible(false);
myHBox.managedProperty().bind(myHBox.visibleProperty());

  • 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.

1283950cookie-checkJavaFX – setVisible verbirgt das Element, ordnet aber benachbarte Knoten nicht neu an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy