8
我對JavaFX中的綁定功能有疑問。我想要的是綁定2個字符串屬性。但是他們的價值觀不應該是平等的。JavaFX:使用常量字符串前綴綁定StringProperty
讓我們做我舉一個例子:
我有一個StringProperty與代表我的應用程序的最後一個打開的項目。
該值類似於「C:\ temp \ myProject.prj」。
我想在窗口的標題中顯示此路徑。
這很容易:stage.titleProperty().bind(lastprojectProperty());
但我不希望只顯示該項目的路徑,而且應用程序的名稱,
例如: - MyApplication的2.2.4 - C:\ TEMP \ 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());
agonist_非常感謝!你很棒!這是我想要的exactyl !!!有用!沒有ChangeListener就容易多了。 –
沒問題,JavaFX綁定真的很強大,你可以做所有你想要的東西 –