Javafx 日期选择器验证
Javafx Datepicker validation
我们试图验证 javafx 日期选择器。所以我们使用:
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");
}
}
但目前无法使用日期选择器获取无效日期,因为所有无效日期都已更改为起始值。
所以我们问我们是否可以使用 javafx 日期选择器获取无效日期?
***** 编辑 *****
示例:我们有以下日期选择器:
日期选择器[2015-05-12]
现在我们在 DatePicker 中输入 "fjdfk" 所以我们有:
日期选择器[fjdfk]
保存数据时,日期选择器会自动更改为 DatePicker[2015-05-12]
您可以使用 DatePicker#setConverter(StringConverter<LocalDate>)
来捕获任何解析异常并因此警告用户。这是一个示例:
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;
}
}
}
在您的控件中,您只需调用 converter#hasParseError()
,converter
是您使用 DatePicker#setConverter(StringConverter<LocalDate>)
设置的那个
我们试图验证 javafx 日期选择器。所以我们使用:
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");
}
}
但目前无法使用日期选择器获取无效日期,因为所有无效日期都已更改为起始值。 所以我们问我们是否可以使用 javafx 日期选择器获取无效日期?
***** 编辑 *****
示例:我们有以下日期选择器: 日期选择器[2015-05-12] 现在我们在 DatePicker 中输入 "fjdfk" 所以我们有: 日期选择器[fjdfk] 保存数据时,日期选择器会自动更改为 DatePicker[2015-05-12]
您可以使用 DatePicker#setConverter(StringConverter<LocalDate>)
来捕获任何解析异常并因此警告用户。这是一个示例:
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;
}
}
}
在您的控件中,您只需调用 converter#hasParseError()
,converter
是您使用 DatePicker#setConverter(StringConverter<LocalDate>)