2

私が書いているプログラムでは、ユーザーはJXDatePickerの日付をクリックして、タスクが完了した日付を設定できます。私のプログラムでは将来の日付の選択が無効であるため、JXDatePickerで将来の日付の選択を無効にしたいのですが。

JXDatePickersにはJXMonthViewが含まれていることがわかりましたが、日付ピッカーまたは月ビューでは、個々の日付/範囲の日付を無効にできないようです。個々の日付と日付の範囲の背景色を変更できます。これにより、将来の日付を別の色にすることができます。次に、ユーザーがカレンダーをクリックして将来の日付を禁止するたびに、検証を追加できます。ただし、calendar.setMaxDate(today);のように言うことができれば、はるかにクリーンになります。

機能を手動でコーディングするよりも簡単な方法があるかどうか誰かが知っていますか?おそらく、別の日付ピッカーコンポーネントがこの問題を修正しますか?

4

4 に答える 4

5

日付の選択を範囲のみに制限する場合は、上限と下限を指定できます

JXDatePicker picker = new JXDatePicker();
Calendar calendar = picker.getMonthView().getCalendar();
// starting today if we are in a hurry
calendar.setTime(new Date());
picker.getMonthView().setLowerBound(calendar.getTime());
// end of next week
CalendarUtils.endOfWeek(calendar);
calendar.add(Calendar.WEEK_OF_YEAR);
picker.getMonthView().setUpperBound(calendar.getTime());

(JavaDocsから取得)

これにより、基本的に、有効で選択可能な日付が今日から週末に制限されます。

于 2012-11-05T05:21:46.433 に答える
0

数分の調査の後、JDatePickerはここで機能するようです-http://jdatepicker.com/tour-date-restriction.htmlを参照してください

ただし、JXDatePickersを使用してこれを実現するための提案は、簡単な方法を知っている人がいれば、まだオープンです。

于 2012-11-05T05:06:59.953 に答える
0
package org.chillies.validator;
import java.util.Date;
@SuppressWarnings("deprecation")
public class DateValidator {
public Date getlowerBoundDate(){
    String date;
    Date date1=new Date();
    Integer year=1900+date1.getYear();
    date="01-Apr-"+year;
    return new Date(date);
}
public Date getupperBoundDate(){
    String date;
    Date date1=new Date();
    Integer year=1900+date1.getYear();
    date="31-Mar-"+(year+1);//you can set date as you wish over here
    return new Date(date);
 }
}

このクラスを適用するためのコードの残りの部分は次のようになります

datePicker.setBorder(null);
    DateValidator datevalidator=new DateValidator();
    datePicker.getMonthView().setLowerBound(datevalidator.getlowerBoundDate());
    datePicker.getMonthView().setUpperBound(datevalidator.getupperBoundDate());
于 2014-06-02T06:04:03.290 に答える
0
        Callback<DatePicker, DateCell> callB = new Callback<DatePicker, DateCell>() {
            @Override
            public DateCell call(final DatePicker param) {
                return new DateCell() {
                    @Override
                    public void updateItem(LocalDate item, boolean empty) {
                        super.updateItem(item, empty); //To change body of generated methods, choose Tools | Templates.
                        LocalDate today = LocalDate.now();
                        setDisable(empty || item.compareTo(today) < 0);
                    }

                };
            }

        };
        selectedDate.setDayCellFactory(callB);

日付を無効にする......。

于 2019-05-08T15:30:29.793 に答える