0

から過去の日付と 2 週間後の日付を無効にしたいJCalendar

私はすでにこのコードを持っています:

jDateChooser1.getJCalendar().setMinSelectableDate(new Date());
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);

過去の日付を無効にすることはできますが、今から 2 週間後のような未来の日付を無効にするにはどうすればよいですか?

4

3 に答える 3

3

ここに示すように、 IDateEvaluatorlikeを使用してMinMaxDateEvaluator日付の範囲を無効にすることができます。

private static class RangeEvaluator extends MinMaxDateEvaluator {

    @Override
    public boolean isInvalid(Date date) {
        return !super.isInvalid(date);
    }
}

次に、無効な日付の範囲を指定できます。たとえば、前日と 2 週間後です。

    Calendar min = Calendar.getInstance();
    min.add(Calendar.DAY_OF_MONTH, -1);
    Calendar max = Calendar.getInstance();
    max.add(Calendar.DAY_OF_MONTH, 13);
    RangeEvaluator re = new RangeEvaluator();
    re.setMinSelectableDate(min.getTime());
    re.setMaxSelectableDate(max.getTime());
    JCalendar jc = new JCalendar();
    jc.getDayChooser().addDateEvaluator(re);
    jc.setCalendar(jc.getCalendar());

RangeEvaluatorの複数のインスタンスを追加して、異なる範囲を処理できることに注意してください。

于 2014-10-12T05:04:51.220 に答える
1

私はこれを試していませんが、将来の日付を使用するとこれが行われると思います:

Date d = new Date();
d.setTime(d.getTime() + 14 * 86400 * 1000); -- set the date 14 days forward
jDateChooser1.getJCalendar().setMinSelectableDate(d);
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false);

Date オブジェクトを操作して setTime(milliseconds) を使用する代わりに、日付などを変更するためのより優れたメソッドを持つ適切な Cal​​endar オブジェクトを使用することをお勧めします。

Calendar cal = Calendar.getInstance();
calendar.add(Calendar.DAY_OF_YEAR, 14);
Date twoweeks = calendar.getTime();
于 2014-10-12T03:29:38.853 に答える