1

ユーザーが日付を選択できるように JSpinner を作成しようとしています。日付の下限と日付の上限が必要です。また、初期値を日付制限の下限にしたいと考えています。残念ながら、私の問題は、下限を初期値として使用できないことです (JSpinner は単に応答しなくなります)。これが私のコードです:

SpinnerDateModel model = new SpinnerDateModel();
model.setStart(minTime);  //lower limit
model.setEnd(maxTime);    //upper limit
model.setValue(minTime);  //doesn't like this!
model.setCalendarField(Calendar.MINUTE);
JSpinner timePicker = new JSpinner(model);
timePicker.setEditor(new JSpinner.DateEditor(timePicker, "HH:mm dd/MM/yy"));

初期値を下限の前後 1 分に設定すると、問題なく動作します。しかし、私の要件では、私はそれを望んでいません。

ヘルプ?

4

1 に答える 1

3

私にはバグのように見えます。私はいくつかのコードをいじりました。あなたが渡すものは何でもsetValue、私はそれを と呼びますvalueが、少なくとも 1calendarField単位以上でなければなりませんminTime

つまり、 をmodel.setCalendarField(Calendar.YEAR)使用valueした場合、 に 2010 年の日付を使用したと仮定すると、 は 2011 年の任意の日付である必要がありますminTime

Sun によると、SpinnerDateModel コンストラクターによって適用される不変条件はminimum <= value <= maximumであるため、この問題は発生しないはずです。

頭に浮かぶ最初の回避策は、およびメソッドをSpinnerDateModelオーバーライドして、目的の に対して手動でチェックするカスタムを作成することです。getPreviousValue()setValue()minTime

于 2010-08-13T17:19:08.777 に答える