焦点改变后自动计算年龄
Automatically calculate age after focus change
能否请您帮助我了解如何在从日期选择器选择日期后以及当焦点从日期选择器更改为年龄文本字段时自动计算年龄?
A FocusListener
会有所帮助,例如...
JXDatePicker dp = new JXDatePicker();
dp.getEditor().addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
// Calculate age
Date date = dp.getDate();
}
});
有关详细信息,请参阅 How to Write a Focus Listener
年龄计算最好使用 JodaTime 或 Java 8 的新时间 API
Java 8
Date date = // Date from date picker
LocalDate ld = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
//LocalDate ld = LocalDate.of(1972, Month.MARCH, 8);
Period p = Period.between(ld, LocalDate.now());
System.out.println(p.getYears());
System.out.println(p.getMonths());
System.out.println(p.getDays());
输出类似...
42
11
18
乔达时间
Date date = // Date from date picker
LocalDate ld = LocalDate.fromDateFields(date);
Period p = Period.fieldDifference(ld, LocalDate.now());
System.out.println(p.getYears());
System.out.println(p.getMonths());
System.out.println(p.getDays());
能否请您帮助我了解如何在从日期选择器选择日期后以及当焦点从日期选择器更改为年龄文本字段时自动计算年龄?
A FocusListener
会有所帮助,例如...
JXDatePicker dp = new JXDatePicker();
dp.getEditor().addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
// Calculate age
Date date = dp.getDate();
}
});
有关详细信息,请参阅 How to Write a Focus Listener
年龄计算最好使用 JodaTime 或 Java 8 的新时间 API
Java 8
Date date = // Date from date picker
LocalDate ld = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
//LocalDate ld = LocalDate.of(1972, Month.MARCH, 8);
Period p = Period.between(ld, LocalDate.now());
System.out.println(p.getYears());
System.out.println(p.getMonths());
System.out.println(p.getDays());
输出类似...
42
11
18
乔达时间
Date date = // Date from date picker
LocalDate ld = LocalDate.fromDateFields(date);
Period p = Period.fieldDifference(ld, LocalDate.now());
System.out.println(p.getYears());
System.out.println(p.getMonths());
System.out.println(p.getDays());