0

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);

おそらく変数の初期化の問題です。私は正しいですか、誰かがこれを修正できますか、それともライブラリを間違って使用していますか?

4

2 に答える 2