Alle Layoutbereiche, z. B. AnchorPane
, verwalten das Layout ihrer verwalteten untergeordneten Knoten gemäß der Konfiguration, die Sie auf den Bereich und die untergeordneten Elemente anwenden. Sie tun dies, indem sie die Eigenschaften layoutX
und layoutY
einstellen. Mit anderen Worten, der Ankerbereich selbst ruft loginButton.setLayoutY(...)
auf, was zu der Ausnahme führt, die Sie sehen, wenn Sie die layoutY
-Eigenschaft binden.
Wenn Sie setManaged(false)
aufrufen, versucht der Ankerbereich nicht, die loginButton
zu positionieren oder die Größe zu ändern, und Sie erhalten keine Ausnahme. Beachten Sie, dass Ihre Bindung den oberen Teil der Anmeldeschaltfläche (ihre layoutY
-Eigenschaft) auf der Höhe des Ankerfensters, dh ganz unten im Ankerfenster, und der Schaltfläche positioniert, wenn der Ankerbereich auf die bevorzugte Größe festgelegt wird außerhalb der Grenzen des Ankerfensters sein. Daher wird es nicht sichtbar sein. Sie müssen die Schaltfläche auch explizit skalieren, indem Sie loginButton.resize(...)
verwenden.
Die Quintessenz ist, dass Sie keine Bindungen verwenden sollten, um das Layout durchzuführen. Verwenden Sie die vorhandenen Layoutfenster, um das Layout (Position und Größe) Ihrer Knoten zu verwalten. Das Tutorial hat eine overview of the layout panes. Wenn Sie wirklich keine Kombination von Layoutfenstern und Einstellungen finden, die Ihnen das gewünschte Layout geben (was sehr unwahrscheinlich ist), können Sie ein benutzerdefiniertes Layout definieren, indem Sie Pane
ableiten und Ihre eigene layoutChildren()
-Methode implementieren. Um diesen Ansatz zu verwenden, können Sie zunächst prüfen, wie die vorhandenen Bereiche implemented sind.
Wenn Sie möchten, dass sich die Schaltfläche am unteren Rand des Fensters befindet, sagen Sie dem Ankerfenster, dass er dort positioniert werden soll. Ersetzen Sie die Bindung mit
AnchorPane.setBottomAnchor(loginButton, 0.0);
Thx für die Antwort, ich habe es über AnchorPane, aber ich nicht noch über setManaged (false) verstehen, habe ich einen beliebigen Wert layoutY und layoutX bande die Buttom im Layout erscheinen. – Marckaraujo
@Marckaraujo Wenn Sie 'managed' auf' false' setzen, wird wahrscheinlich auch die Größe der Schaltfläche nicht festgelegt. Versuchen Sie auch, 'resize()' aufzurufen. Aber Sie sollten die Dinge nicht wirklich so machen: Verwenden Sie die Layout-Fenster so, wie sie verwendet werden sollen. –
@Marckaraujo Hinzugefügt Erwähnung der Größe der Antwort. –