2012-04-05 59 views

回答

7

我不認爲在組件上有一個簡單的方法來做到這一點。 我知道的一種方法是使用setSelectableDateRange(Date from,Date to) - 將起始日期設置爲當前日期時,將禁用所有前一天的單元格,年/月下拉菜單。

例子:

JCalendar calendar = new JCalendar(); 
    calendar.setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); 

    PropertyChangeListener calendarChangeListener = new PropertyChangeListener() { 
     @Override 
     public void propertyChange(PropertyChangeEvent evt) { 
      Date selectedDate = ((JCalendar)evt.getSource()).getDate(); 
     } 
    }; 
    calendar.addPropertyChangeListener("calendar",calendarChangeListener); 

這將禁用任何日期的選擇當前日期之前和之後的2015年5月5日

注意,此API在他們的javadoc未記錄。但這仍然是一個按預期工作的公共設置者。

編輯,因爲你想知道如何JDateChooser可以在類似的情況下

JDateChooser chooser = new JDateChooser(); 
    chooser.getJCalendar().setSelectableDateRange(new Date(),new SimpleDateFormat("MM-DD-YYYY").parse("05-05-2015")); 
    chooser.getJCalendar().addPropertyChangeListener("calendar",...); 
+1

最小值,最大值和範圍的方法在'IDateEditor'接口中指定使用。 – trashgod 2012-04-05 10:44:32

+0

有兩個庫jcalendar。其中一個方法setSelectableDataRange被定義,但沒有定義addDateListener。在另一個是定義addDateListener但不是setSelectableDataRange ..我該如何解決它?我需要他們的方法。否則,如果我使用定義了setSelectableDateRange的庫,如何從用戶點擊日期以便將該日期添加到jtextfield? – JackTurky 2012-04-05 12:17:00

+0

@ user1190704 - 哼!這很棘手。請在編輯答案中查詢代碼。 – 2012-04-05 12:58:55