Ich versuche ein Textfeld zu erstellen, das ein Bildteil in sich hat, ähnlich wie this.Wie verhindert man die zirkuläre Bindungsabhängigkeit?
imageView.fitHeightProperty().bind(Bindings.createDoubleBinding(
() -> textField.getHeight() -
textField.getPadding().getTop() -
textField.getPadding().getBottom(),
textField.heightProperty(), textField.paddingProperty()));
imageView.fitWidthProperty().bind(imageView.fitHeightProperty());
textField.paddingProperty().bind(Bindings.createObjectBinding(
() -> new Insets(textField.getPadding().getTop(),
textField.getPadding().getRight(),
textField.getPadding().getBottom(),
textField.getPadding().getRight() * 2 + imageView.getFitWidth()),
imageView.fitWidthProperty(), textField.paddingProperty()));
Mein aktueller Ansatz ist es, eine StackPane
verwenden die TextField
zu halten, dann auch eine ImageView
als die StackPane
‚s Kind hinzufügen. Die ImageView
muss wissen, wie die Größe selbst, so habe ich seine fitHeight
an die TextField
Höhe, unter Berücksichtigung der TextField
's Polsterung gebunden.
Die ImageView
's fitWidth
ist dann an eine eigene fitHeight
gebunden.
Schließlich muss ich meine TextField
machen ‚auf der rechten Seite s Textversatz (weil das Bild, um es blockiert), so habe ich wieder eine andere, dass die Bindung ist abhängig von der ImageView
‘ s fitWidth
.
Dies führt zu einer zyklischen Abhängigkeit, die dazu führt, dass der Stapel überläuft. Gibt es eine andere Möglichkeit, dies zu tun, ohne die linke Polsterung TextField
hart zu codieren?
Warum müssen Sie die Größe des Bildes ändern? –