JDatePicker は、日付を選択するためのオープン ソース Java GUI コンポーネントです。
http://sourceforge.net/projects/jdatepicker/
コンポーネントを作成した直後に 2 月を月に設定するとバグが発生するようです。他のすべての月は正しく機能します。
package jat.examples.DatePicker;
import jat.jdatepicker.JDateComponentFactory;
import jat.jdatepicker.JDatePicker;
import javax.swing.JApplet;
import javax.swing.JComponent;
public class DatePickerExample extends JApplet{
private static final long serialVersionUID = 1920676464239324135L;
JDatePicker depart_date_picker;
public void init() {
depart_date_picker = JDateComponentFactory.createJDatePicker();
depart_date_picker.setTextEditable(true);
depart_date_picker.setShowYearButtons(true);
add((JComponent) depart_date_picker);
}
public void start() {
depart_date_picker.getModel().setYear(2010);
depart_date_picker.getModel().setMonth(1);
//depart_date_picker.getModel().setMonth(1);
depart_date_picker.getModel().setDay(15);
depart_date_picker.getModel().setSelected(true);
}
}
2 月を表示する代わりに、3 月を表示します。
デバッガーで、oldValue が null であることに気付きました。
public void setMonth(int month) {
int oldMonthValue = this.calendarValue.get(Calendar.MONTH);
T oldValue = getValue();
calendarValue.set(Calendar.MONTH, month);
fireChangeEvent();
firePropertyChange("month", oldMonthValue, this.calendarValue.get(Calendar.MONTH));
firePropertyChange("value", oldValue, getValue());
}
案の定、このメソッドを 2 回呼び出すと、2 月が正しく表示されます。
depart_date_picker.getModel().setMonth(1);
depart_date_picker.getModel().setMonth(1);
おそらく変数の初期化の問題です。私は正しいですか、誰かがこれを修正できますか、それともライブラリを間違って使用していますか?