首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JDateChooser中设置JCalendar日期

如何在JDateChooser中设置JCalendar日期
EN

Stack Overflow用户
提问于 2015-03-27 19:55:21
回答 2查看 13.5K关注 0票数 1

我有一个用来选择生日的JDateChooser。它以空日期值开始,让用户使用文本字段或打开Jcalendar的jdatechooser按钮选择出生日期。

我要做的是将JCalendar的日期设置为从当前日期算起的-10年。默认情况下,JCalendar将日期设置为当前年份。我尝试过此代码,但它不起作用--它仍然将日期设置为当前日期。任何帮助都行。谢谢!

代码语言:javascript
复制
    dcBirthDateNew = new JDateChooser();
    dcBirthDateNew.setDateFormatString("MM/dd/yyyy");
    dcBirthDateNew.getDateEditor().getUiComponent().addFocusListener(new FocusAdapter() {
        @Override
        public void focusGained(FocusEvent evt) {
            if (evt.getSource() instanceof JTextComponent) {
                final JTextComponent textComponent=((JTextComponent)evt.getSource());
                SwingUtilities.invokeLater(new Runnable(){
                    public void run() {
                        textComponent.selectAll();
                    }});
            }   
        }
    });
    JCalendar calx = dcBirthDateNew.getJCalendar();
    calx.setCalendar(getPrevDate());

private static Calendar getPrevDate() {
    DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
    Date myDate = new Date(System.currentTimeMillis());
    System.out.println("result is "+ dateFormat.format(myDate));
    Calendar cal = Calendar.getInstance();
    cal.setTime(myDate);
    cal.add(Calendar.YEAR, -10);
    System.out.println(dateFormat.format(cal.getTime()));
    return cal;
}

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-28 00:29:16

这看起来工作正常。

代码语言:javascript
复制
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -10);

JDateChooser chooser = new JDateChooser(c.getTime());
this.add(chooser);

附录:弹出式编辑器的date默认为JDateChooser中的值,如果显式设置,将成为默认值:

代码语言:javascript
复制
JDateChooser chooser = new JDateChooser();
chooser.getDateEditor().setDate(c.getTime());

您可以更新PropertyChangeListener中的另一个空文本域,如here所示;属性名为"date"

附录:仔细看看,ActionListenerJDateChooser实现可以处理上面描述的默认日期。您可以覆盖它,替换下面显示的行,以创建不同的默认值。

代码语言:javascript
复制
JDateChooser chooser = new MyDateChooser();
this.add(chooser);
…
private static class MyDateChooser extends JDateChooser {

    @Override
    public void actionPerformed(ActionEvent e) {
        …
        Date date = dateEditor.getDate();
        if (date == null) {
            Calendar c = Calendar.getInstance();
            c.add(Calendar.YEAR, -10);
            calendar.setTime(c.getTime());
        } else {
            calendar.setTime(date);
        }
        jcalendar.setCalendar(calendar);
        …
    }
}

票数 4
EN

Stack Overflow用户

发布于 2015-03-27 22:47:04

也许有另一种方法可以做到这一点,但这就是我所拥有的:

代码语言:javascript
复制
Date date = new Date();
Calendar calendar = Calendar.getInstance();
int subtractYearValue = 10;

int currentYear = Calendar.getInstance().get(Calendar.YEAR);
int currentMonth = Calendar.getInstance().get(Calendar.MONTH);
int currentDate= Calendar.getInstance().get(Calendar.DATE);

calendar.set(currentYear - subtractYearValue , currentMonth , currentDate);
date.setTime(calendar.getTimeInMillis());

dateChooser.setDate(date);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29300122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档