JavaFX datepicker不更新值

JavaFX datepicker不更新值,第1张

JavaFX datepicker不更新值

我在上面添加的错误日志给出了答案。您可以通过以下代码访问文本框的字符串值:

datePicker.getEditor().getText();

因此,可以通过以下方式设置文本框的值:

datePicker.setValue(datePicker.getConverter()    .fromString(datePicker.getEditor().getText()));

我向失焦事件添加了一个事件,这将强制更新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; try{     return LocalDate.parse(dateString,dateTimeFormatter); } catch(Exception e){     //Bad date value entered     return null; }        }    });    dtpckr.setpromptText("yyyy/MM/dd");    dtpckr.setValue(LocalDate.parse(defaultDate.toString(), DateTimeFormatter.ofPattern("yyyy/MM/dd")));    //This deals with the bug located here where the datepicker value is not updated on focus lost    //https://bugs.openjdk.java.net/browse/JDK-8092295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel    dtpckr.focusedProperty().addListener(new ChangeListener<Boolean>() {        @Override        public void changed(Observablevalue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) { if (!newValue){     dtpckr.setValue(dtpckr.getConverter().fromString(dtpckr.getEditor().getText())); }        }    });    return dtpckr;}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5565480.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存