我有一个文本字段,其绑定到这样的时间段:
timeStringProperty.bind(clock.getTimeString());
timeTextField.textProperty().bind(timeStringProperty);
在Clock.java中我有:
public StringBinding getTimeString() {
return Bindings.createStringBinding(() -> DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM).format(time.get()), time);
}
时间来自TimeLine。
这很有效,并且在timeTextfield中显示和更新当前时间。
现在我想为我的程序用户添加确定时间格式的功能,例如"为hh:mm"或者" hh:mm:ss"。
如何绑定到formatString,以便在formatString值更改后,时间显示会以新格式更新?
答案 0 :(得分:1)
向ObjectProperty<DateTimeFormatter>
:
Clock
public class Clock {
private final ObjectProperty<DateTimeFormatter> formatter =
new SimpleObjectProperty<>(DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM));
public ObjectProperty<DateTimeFormatter> formatterProperty() {
return formatter ;
}
public final DateTimeFormatter getFormatter() {
return formatterProperty().get();
}
public final void setFormatter(DateTimeFormatter formatter) {
formatterProperty().set(formatter);
}
// ... other code as before
}
现在更新StringBinding
以便它使用formatter
并绑定到它:
public StringBinding getTimeString() {
return Bindings.createStringBinding(() -> getFormatter().format(time.get()), time, formatter);
}