有点奇怪的是,我正在使用JavaFX 8并且在我的Jubula测试期间遇到了一些奇怪的行为.
我有一个使用以下代码创建的datepicker控件:
public DatePicker getDatePicker(DtDate defaultDate, int width){
DatePicker dtpckr = new DatePicker();
dtpckr.setMaxWidth(width);
dtpckr.setMinWidth(width);
dtpckr.setConverter(new StringConverter<LocalDate>() {
private DateTimeFormatter dateTimeFormatter=DateTimeFormatter.ofPattern("yyyy/MM/dd");
@Override
public String toString(LocalDate localDate) {
if(localDate==null)
return "";
return dateTimeFormatter.format(localDate);
}
@Override
public LocalDate fromString(String dateString) {
if(dateString==null || dateString.trim().isEmpty())
return null;
return LocalDate.parse(dateString,dateTimeFormatter);
}
});
dtpckr.setPromptText("yyyy/MM/dd");
dtpckr.setValue(LocalDate.parse(defaultDate.toString(), DateTimeFormatter.ofPattern("yyyy/MM/dd")));
return dtpckr;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,控件在窗体上创建并按预期工作.如果我使用日历来选择日期,则会更新该值.
现在,对于奇数部分,如果我输入日期选择器并手动键入日期(例如2017/10/11)然后通过选项卡或单击表单上的下一个文本框退出控件,则datepicker localdate值不会没有更新.更新日期的唯一方法是按Enter键强制datepicker实现新值.这导致另一个问题,因为我有以下代码:
public void createSetDateAndTimeControls(){
DtDateAndTime currentDateAndTime;
try {
currentDateAndTime = systemstateController.getServerDateTime();
/*
* Creating controls to be used on the form
*/
int …Run Code Online (Sandbox Code Playgroud)