2014-10-12 18 views
0

我想從現在開始的JCalendar禁用過去的日期和2周。從現在起在JCalendar中禁用過去的日期和2周

我已經有這樣的代碼:

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

我已經可以禁用過去的日期,但是怎麼樣從現在開始禁用如2未來週日期?

+0

您使用哪個日期API?它是JAVA日期API嗎? – StackFlowed 2014-10-12 03:29:01

+0

這是JCalendar API :) – user3331023 2014-10-12 04:06:14

回答

3

如圖here,可以使用一個IDateEvaluatorMinMaxDateEvaluator無效日期範圍:

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對象工作,不必使用時刻設定(毫秒),你可能想使用的一個適當的日曆對象,它有更好的方法來更改日期等等。

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

相關問題