我想禁用或隐藏或使JDateChooser中的过去日期不可选择。我该怎么做?我尝试使用.setSelectableDateRange
但它不起作用。我也尝试了.setMinSelectableDate()
但仍然没有运气。我不知道,但 netbeans 似乎不知道这些,因为这些没有出现在代码建议中。我是这样使用它的:
public void dateset() {
jDateChooser1.getCalendar(). //What to put here? It doesn't have .setSelectableRange
}
我只尝试了我在这个上面找到的那个:如何在 JCalendar 中仅显示今天日期之后的日期
我认为那个帖子已经过时了。请帮忙。
在这里:
jDateChooser1.getCalendar().
您正在尝试将日期的边界设置为 java.util.Calendar 对象,这是不可能的。也许你对返回一个JCalendar对象的getJCalendar()感到困惑:
jDateChooser1.getJCalendar().setMinSelectableDate(new Date()); // sets today as minimum selectable date
请注意,您可以直接在日期选择器上设置最小可选日期:
jDateChooser1.setMinSelectableDate(new Date()); // sets today as minimum selectable date
检查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);
}
...
}
您可能还想看看如何禁用或突出显示java日历中的日期,以便更好地了解IDateEvaluator界面,这实际上是整个日期验证问题的关键。
试试这个例子。
package chooseyourdate;
import com.toedter.calendar.JCalendar;
import com.toedter.calendar.JDateChooser;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.swing.JFrame;
public class MainFrame extends JFrame {
private JDateChooser chooser;
public MainFrame() {
JCalendar calendar = new JCalendar(GregorianCalendar.getInstance());
chooser = new JDateChooser(calendar, new Date(), "dd.MM.yy", null);
GregorianCalendar cal = (GregorianCalendar)GregorianCalendar.getInstance();
// set the max date
cal.set(2015, 10, 10);
// MinDate is the current Date
// MaxDate you can set in the GregorianCalendar object
chooser.setSelectableDateRange(new Date(), cal.getTime());
chooser.addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
// to something...
}
});
this.setSize(new Dimension(800, 600));
this.getContentPane().add(chooser, BorderLayout.NORTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}