1

今日以降の日付のみを選択するようにユーザーを制限しようとしています。または、次々Date に日付を選択するようにしています。JCalendarAPIで 役立つ情報が表示されますが、何も見つかりませんでした。どうすればよいですか。

4

1 に答える 1

7

コンポーネントでこれを行う簡単な方法はないと思います。私が知っている1つの方法は、使用する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",...);
于 2012-04-05T05:16:24.343 に答える