【发布时间】:2014-03-26 18:50:29
【问题描述】:
我花了很多时间阅读 Java 文档和相关问题,但仍然无法准确理解我需要做什么才能完成我想要的。
我知道我将使用MaskFormatter(因为我希望始终显示/ /)、SimpleDateFormater 和DocumentListeners,所以我大部分时间都在研究这些,但不知道如何使用一切都在一起。
我有一个使用MaskFormatter("##/##/####") 的JFormattedTextField,我希望最终将其存储为MM/dd/yyyy 格式的日期。
private JFormattedTextField weekEndingData = new JFormattedTextField(createFormatter("##/##/####"));
private String dateString = weekEndingData.toString();
private SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy");
private MaskFormatter createFormatter(String s) {
MaskFormatter formatter = null;
try {
formatter = new MaskFormatter(s);
} catch (java.text.ParseException exc) {
System.err.println("formatter is bad: " + exc.getMessage());
System.exit(-1);
}
return formatter;
}
这个日期反映了“星期结束日期”,在我的例子中是星期日。该日期将被发送到数据库,并且还将用于自动显示一周中其余日子的日期。比如:
如果用户输入的星期结束日期是 2014 年 3 月 30 日,那么表单上的 JLabel 将在文本“星期日”下填写为 3/30,在星期六下填写 3/29,以此类推直到周一。这就引出了我的下一个问题,减去日期。
我已经进行了研究,几乎所有地方都指向 JodaTime,但我也看到有人提到新的 Java8 JDK 解决了 Java 以前在日期方面的许多弱点。
我正在寻找关于映射/列出我想要完成的要求方面的指导,因为我感到非常混乱并且似乎无法找到足够强大的方向。我也希望对 JDK8 使用日期的方式以及它是否比 Joda 更好的选择提供任何反馈。 (我知道这里不赞成主观性,但我不知道还能问哪里。)
编辑可视化可能会有所帮助。该面板将被打印,因此 JSpinner 是不利的。黄色只是暂时帮助我可视化空间分布。
【问题讨论】:
-
关于如何增加/减少一个
Date见:stackoverflow.com/questions/428918/…
标签: java swing date jformattedtextfield