thisのようなイメージ部分を持つテキストフィールドを作成しようとしています。循環バインディングの依存関係を防ぐ方法
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()));
私の現在のアプローチは、その後もStackPane
の子としてImageView
を追加し、TextField
を保持するためにStackPane
を使用することです。 ImageView
はサイズ変更の仕方を知る必要があるので、TextField
のパディングを考慮して、そのfitHeight
をTextField
の高さにバインドしました。
ImageView
のfitWidth
は、それ自身のfitHeight
にバインドされています。
最後には、私は私のTextField
ようにする必要があり '(画像がそれをブロックしているため)のテキストが右にオフセットので、私は再び別のはそれがImageView
に依存している結合なかったのfitWidth
。
これは、循環依存関係に終わり、スタックがオーバーフローする原因になります。 TextField
の左パディングをハードコーディングせずにそれを行う他の方法はありますか?
なぜイメージのサイズを変更する必要がありますか? –