Javafx Datepicker验证 [英] Javafx Datepicker validation

查看:145
本文介绍了Javafx Datepicker验证的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们尝试验证javafx日期戳。所以我们使用:

we tried to validate a javafx datepicker. So we use:

if (fromDatePicker.getValue() == null) {
        sb.append("No valid from date!\n");
    } else {
        System.out.println(fromDatePicker.getValue().toString());
        if (!DateUtil
                .validEnglishDate(fromDatePicker.getValue().toString())) {
            sb.append("No valid from date. Use the format yyyy-MM-dd.\n");
        }
    }

但目前无法获得无效的日期使用datepicker,因为所有无效日期都更改为起始值。
所以我们问我们是否可以使用javafx datepicker获取无效的日期?

But at the moment it's impossible to get an invalid Date with the datepicker, because all invalid date's are changed to the start value. So we asked us is it possible to get an invalid Date with the javafx datepicker?

*****编辑*****

***** EDIT *****

示例:我们有以下datepicker:
DatePicker [2015-05-12]
现在我们在DatePicker中输入了fjdfk,所以我们有:
DatePicker [fjdfk]
将数据的datepicker自动更改为DatePicker [2015-05-12]

Example: we have the following datepicker: DatePicker[2015-05-12] now we entered "fjdfk" in the DatePicker so we have: DatePicker[fjdfk] on save the data's the datepicker changes automatical to DatePicker[2015-05-12]

推荐答案

您可以使用 DatePicker#setConverter(StringConverter< LocalDate>)来捕获任何解析异常,并因此警告用户。以下是一个示例:

You could use the DatePicker#setConverter(StringConverter<LocalDate>) to catch any parse exception and warn the user in consequence. Here is a sample :

public class SecureLocalDateStringConverter extends StringConverter<LocalDate> {
    /**
     * The date pattern that is used for conversion. Change as you wish.
     */
    private static final String DATE_PATTERN = "dd/MM/yyyy";

    /**
    * The date formatter.
    */
    public static final DateTimeFormatter DATE_FORMATTER =
        DateTimeFormatter.ofPattern(DATE_PATTERN);

    private boolean hasParseError = false;

    public boolean hasParseError(){
        return hasParseError;
    }

    @Override
    public String toString(LocalDate localDate) {
       return DATE_FORMATTER.format(localDate);
    }

    @Override
    public LocalDate fromString(String formattedString) {

            try {
                LocalDate date=LocalDate.from(DATE_FORMATTER.parse(formattedString));
                hasParseError=false;
                return date;
            } catch (DateTimeParseException parseExc){
                hasParseError=true;
                return null;
            }
    }

}

从你的控制,你只需要调用转换器#hasParseError()转换器 c $ c> DatePicker#setConverter(StringConverter< LocalDate>)

From your control, you'll just have to call converter#hasParseError(), converter being the one you set with DatePicker#setConverter(StringConverter<LocalDate>)

这篇关于Javafx Datepicker验证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆