[英]JCalendar sets to March 30 when February is chosen
代码只包含月份和年份,可以在jcalendar中选择,默认情况下,2 月的日期为 30 和 28,当我选择 2 月时出现问题,自动jcalendar设置为 3 月 30 日; 这是代码; 它在jcalendar的PropertyChange
事件中。
Calendar cal = PFI.getCalendar();
int day = cal.get(Calendar.DAY_OF_MONTH);
int month = cal.get(Calendar.MONTH);
int year = cal.get(Calendar.YEAR);
if(month==1){
cal.set(year, 1 , 28);
PFI.setCalendar(cal);
}
else
{
cal.set(year, month , 30);
PFI.setCalendar(cal);
}
结合@Ole VV和@Catalina Island的建议,下面的片段说明了GridLayout
中的JYearChooser
和JMonthChooser
。 然后,一个普通的侦听器使用java.time
来显示所选年份和月份的最后一天。
JPanel panel = new JPanel(new GridLayout(1, 0));
JMonthChooser jmc = new JMonthChooser();
JYearChooser jyc = new JYearChooser();
JLabel label = new JLabel("Last day of month:");
label.setHorizontalAlignment(JLabel.RIGHT);
JTextField last = new JTextField(8);
label.setLabelFor(last);
PropertyChangeListener myListener = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent e) {
LocalDate ld = LocalDate.of(jyc.getYear(), jmc.getMonth() + 1, 1)
.with(TemporalAdjusters.lastDayOfMonth());
last.setText(ld.format(DateTimeFormatter.ISO_DATE));
}
};
myListener.propertyChange(null);
jmc.addPropertyChangeListener("month", myListener);
jyc.addPropertyChangeListener("year", myListener);
panel.add(jyc);
panel.add(jmc);
panel.add(label);
panel.add(last);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.