JavaFX의 바인드 기능에 대한 질문이 있습니다. 내가 원하는 건 2 문자열 속성을 바인딩하는 것입니다. 그러나 그들의 가치는 평등해서는 안됩니다.JavaFX : 상수 문자열 접두어로 문자열 속성 바인딩
의 나에게 예를 만들자 : 내 응용 프로그램의 마지막 열려있는 프로젝트를 나타냅니다와
나는 StringProperty 있습니다.
값은 "C : \ temp \ myProject.prj"와 같습니다.
내 창 제목에이 경로를 표시하고 싶습니다. stage.titleProperty().bind(lastprojectProperty());
하지만 난 단지 프로젝트 경로뿐만 아니라 응용 프로그램 이름,
예컨대 : 에서는 MyApplication 2.2.4 보여주고 싶지 않아 - C :
그것은 쉽게 \ 임시 \의 myProject.prj합니다.
바인딩을 사용하고 상수 문자열을 추가 할 수 있습니까? 또는 ChangeListerner를 사용합니까?
ChangeListener로부터와 솔루션은 초기 값으로 문제가...
final StringProperty path = new SimpleStringProperty("untitled");
final StringProperty title = new SimpleStringProperty("App 2.0.0");
path.addListener(new ChangeListener<String>()
{
@Override
public void changed(ObservableValue<? extends String> ov, String t, String newValue)
{
title.setValue("App 2.0.0 - " + newValue);
}
});
// My title shows "App 2.0.0" since there is now change event throws until now...
// Of course I could call path.setValue("untitled");
// And above path = new SimpleStringProperty("");
System.out.println(title.getValue());
// Now the title is correct: "App 2.0.0 - C:\temp\myProject.prj"
path.setValue("C:\\temp\\myProject.prj");
System.out.println(title.getValue());
고맙습니다. 고맙습니다. 너 멋지다! 이것은 제가 원했던 것입니다 !!! 그것은 작동합니다! ChangeListener없이 훨씬 쉽습니다. –
문제 없음, JavaFX 바인딩은 정말 강력합니다. 원하는 모든 것을 할 수 있습니다. –