javafx.scene.text.Text
의 StringProperty
에 바인딩되어야하는 ObjectProperty
인스턴스로 사용자 지정 개체를 보유하고 있습니다.JavaFX 8 : 사용자 지정 개체의 속성 바인딩
제가 명백한 일을하고 text.textProperty().bind(..);
을 사용하면 Text
은 실제로 내용을 표시합니다 (나는 toString
의 결과를 믿습니다).
하지만 String
을 수정해야합니다. 실제로는 에 표시됩니다.
실제로 바인딩에 제공되는 값을 수정할 수 있습니까? I이 간단한 테스트 프로그램을 생성 제 anwer 다음
== EDIT ==
은 : I '는 바 "로, 두 번째 기대 반면
import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
public class BindingsTest {
public static void main(String... args) {
final ObjectProperty<Foo> foo = new SimpleObjectProperty<>();
foo.set(Foo.FOO);
final StringProperty textProperty = new SimpleStringProperty();
textProperty.bind(Bindings.createStringBinding(() -> foo.get().name().toLowerCase()));
System.out.println(textProperty.get());
foo.set(Foo.BAR);
System.out.println(textProperty.get());
}
private enum Foo {
FOO, BAR
}
}
두 출력은'갑 '을 아르 . 그래서 아마 Bindings.createStringBinding(..)
이후 내가 무엇을 찾고있는 것이 아닌가요?
답변에서 수행되는 방식으로 시도해보십시오. 나는. 'foo'를'createStringBinding()'의 두 번째 인자로 지정 하시겠습니까? –
@James_D 오, 나는 그것을 보지 못했다.이 람다는 여전히 나를 혼란스럽게 만든다. 나는 해결책을 올바르게 재현했다는 것을 알았 기 때문에 나는 그것을 여기에 올렸다 :-) – Hannes
당신은 의존성으로'foo'를 지정하지 않았습니다. 'Bindings.createStringBinding()'은 스스로를 무효화 할 때를 알기 위해서'foo'의 변경을 관찰 할 필요가 있습니다. – Jai