2014-10-12 3 views
0

Я хочу отключить прошлые даты и через 2 недели с JCalendar.Отключить последние даты и через 2 недели в JCalendar

У меня уже есть этот код:

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

Я уже могу отключить прошлые даты, но как об отключении будущих дат, как 2-х недель с этого момента?

+0

Какой API-интерфейс вы используете? Это API-интерфейс JAVA? – StackFlowed

+0

Это API JCalendar :) – user3331023

ответ

3

Как показано here, вы можете использовать IDateEvaluator как MinMaxDateEvaluator недействительным диапазон дат:

private static class RangeEvaluator extends MinMaxDateEvaluator { 

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

Затем вы можете указать диапазон дат недействительных, например, за день до и через две недели после того, как:

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 для обработки различных диапазонов.

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 (миллисекунды), вы можете использовать правильный объект календаря, который имеет лучшие методы для изменения даты и т. д.

Calendar cal = Calendar.getInstance(); 
calendar.add(Calendar.DAY_OF_YEAR, 14); 
Date twoweeks = calendar.getTime(); 
1

Я уже ответил на свой вопрос с помощью кода trashgod.

Здесь:

Calendar min = Calendar.getInstance(); 
min.add(Calendar.DAY_OF_MONTH, 15); 
Calendar max = Calendar.getInstance(); 
max.add(Calendar.DAY_OF_MONTH, 2000000); 
RangeEvaluator re = new RangeEvaluator(); 
re.setMinSelectableDate(min.getTime()); 
re.setMaxSelectableDate(max.getTime()); 
// JCalendar jc = new JCalendar(); 


jDateChooser1.getJCalendar().setMinSelectableDate(min.getTime()); 
jDateChooser1.getJCalendar().setMaxSelectableDate(max.getTime()); 
((JTextFieldDateEditor)jDateChooser1.getDateEditor()).setEditable(false); 

Спасибо! : D