我花了很多時間閱讀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