我花了很多时间阅读Java文档和相关问题,但仍然无法准确理解我需要做什么来完成我想要的功能。如何从带有Mask的JFormattedTextField获取日期
我知道,我将使用一个MaskFormatter
(因为我想/ /
始终显示),SimpleDateFormater
和DocumentListeners
所以我花了我大部分的时间研究这些,但无法弄清楚如何使用一切融合在一起。
我有一个JFormattedTextField
使用MaskFormatter("##/##/####")
我想最终被存储为格式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;
}
此日期反映了 “周结束日期”,这是周日在我的情况。此日期将被发送到数据库,并将用于自动显示本周其余日期的日期。例如:
如果用户输入的星期结束日期为3/30/2014,则表单上的JLabel将在文本“Sunday”下填充为3/30,在星期六下方填充3/29 ,等到星期一。这将我带到我的下一个问题,减去日期。
我已经完成了对JodaTime的所有研究,但我也看到有人提到新的Java8 JDK解决了Java在日期方面的许多弱点。
我在寻找制图方面的指导/列出了我的要求,因为我感到非常混乱,似乎无法找到足够强的方向。我也希望对JDK8使用日期的方式提供任何反馈,并且它是比Joda更好的选择。 (我知道这里的主观性被皱起了眉头,但我不知道还有什么要问的。)
编辑可视化可能有帮助。该小组将印刷,因此JSpinner不利。黄色只在那里暂时帮助我想象空间分布。
关于如何增加/。减去一个'日期'见:http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java – DSquare