隐藏或禁用JDateChooser上的过去日期

use*_*385 1 java swing netbeans jdatechooser

我想禁用或隐藏JDateChooser中的过去的日期,或使其无法选择。我该怎么做?我尝试使用,.setSelectableDateRange但无法正常工作。我也尝试过,.setMinSelectableDate()但还是没有运气。我不知道,但是netbeans似乎不知道这些,因为这些没有出现在代码建议中。我正在这样使用它:

public void dateset() {
    jDateChooser1.getCalendar(). //What to put here? It doesn't have .setSelectableRange
}
Run Code Online (Sandbox Code Playgroud)

我只尝试了在该日历上找到的一个:如何在JCalendar中仅显示今天之后的日期

我认为该帖子已经过时了。请帮忙。

dic*_*c19 5

这里:

jDateChooser1.getCalendar().
Run Code Online (Sandbox Code Playgroud)

您正在尝试将日期的边界设置为java.util.Calendar对象,这是不可能的。也许您对getJCalendar()感到困惑,该方法返回一个JCalendar对象:

jDateChooser1.getJCalendar().setMinSelectableDate(new Date()); // sets today as minimum selectable date
Run Code Online (Sandbox Code Playgroud)

请注意,您可以直接在日期选择器上设置最小可选日期:

jDateChooser1.setMinSelectableDate(new Date()); // sets today as minimum selectable date
Run Code Online (Sandbox Code Playgroud)

检查JDateChooser你可以看到这个方法的源代码只是转发到JCalendar目标:

public class JDateChooser extends JPanel implements ActionListener,
        PropertyChangeListener {

    protected IDateEditor dateEditor;
    protected JCalendar jcalendar;

    ...

    public void setMinSelectableDate(Date min) {
        jcalendar.setMinSelectableDate(min);
        dateEditor.setMinSelectableDate(min);
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

您可能还想看看如何在Java日历中禁用或突出显示日期,以便更好地了解IDateEvaluator界面,这实际上是整个日期验证问题的关键。