diff --git a/designer-base/src/main/java/com/fr/design/gui/date/JDateDocument.java b/designer-base/src/main/java/com/fr/design/gui/date/JDateDocument.java index 86e35010c1..00606c619b 100644 --- a/designer-base/src/main/java/com/fr/design/gui/date/JDateDocument.java +++ b/designer-base/src/main/java/com/fr/design/gui/date/JDateDocument.java @@ -10,9 +10,8 @@ import javax.swing.text.JTextComponent; import javax.swing.text.PlainDocument; /** - * */ -public class JDateDocument extends PlainDocument { +public class JDateDocument extends PlainDocument{ private JTextComponent textComponent; //日期输入文本框 private SimpleDateFormat dateFormat; @@ -27,7 +26,7 @@ public class JDateDocument extends PlainDocument { ** 调用者:类JDateDocument *******************************************************************/ public JDateDocument(JTextComponent tc, SimpleDateFormat dateFormat) throws - UnsupportedOperationException { + UnsupportedOperationException{ //当前日期构造 this(tc, dateFormat, getCurrentDate(dateFormat)); } @@ -35,43 +34,40 @@ public class JDateDocument extends PlainDocument { public JDateDocument(JTextComponent tc, SimpleDateFormat dateFormat, String initDateTime) throws - UnsupportedOperationException { + UnsupportedOperationException{ //设置当前日期格式 setDateFormat(dateFormat); //保存操作的文本框 textComponent = tc; //设置显示为当前日期,同时完成显示的格式化 - try { + try{ insertString(0, initDateTime, null); - } catch (BadLocationException ex) { + } catch(BadLocationException ex){ throw new UnsupportedOperationException(ex.getMessage()); } } /** * 设置当前日期格式 - * * @param dateFormat SimpleDateFormat */ - public void setDateFormat(SimpleDateFormat dateFormat) { + public void setDateFormat(SimpleDateFormat dateFormat){ this.dateFormat = dateFormat; } /** * 取得当前日期格式 - * * @return SimpleDateFormat */ - public SimpleDateFormat getDateFormat() { + public SimpleDateFormat getDateFormat(){ return dateFormat; } /** * 取得当前系统日时 - * * @return String */ - public static String getCurrentDate(SimpleDateFormat smFormat) { + public static String getCurrentDate(SimpleDateFormat smFormat){ return smFormat.format(new Date()); } @@ -86,15 +82,15 @@ public class JDateDocument extends PlainDocument { ** 调用者:类JDateDocument *******************************************************************/ public void insertString(int offset, String s, - AttributeSet attributeSet) throws BadLocationException { + AttributeSet attributeSet) throws BadLocationException{ String toTest; //用于测试输入合法性的字符串 //判断插入字符串长度 - if (s.length() == 1) { + if(s.length() == 1){ //长度为1 - try { + try{ //限制输入为整数 Integer.parseInt(s); - } catch (Exception ex) { + } catch(Exception ex){ //错误则提示并返回 Toolkit.getDefaultToolkit().beep(); return; @@ -102,23 +98,23 @@ public class JDateDocument extends PlainDocument { //取得原始插入位置 int newOffset = offset; //如果插入位置为"/"," ","-"符号的前面,则移动到其后面插入(改变newOffset的值) - if (offset == 4 || offset == 7 || - offset == 10 || offset == 13 || - offset == 16) { + if(offset == 4 || offset == 7 || + offset == 10 || offset == 13 || + offset == 16){ newOffset++; textComponent.setCaretPosition(newOffset); } //如果插入位置为最后,则不插入 - if (offset == dateFormat.toPattern().length()) { + if(offset == dateFormat.toPattern().length()){ return; } //取得显示的时间,处理后得到要显示的字符串 toTest = textComponent.getText(); toTest = toTest.substring(0, newOffset) + s + - toTest.substring(newOffset + 1); + toTest.substring(newOffset + 1); //如果要显示的字符串合法,则显示,否则给出提示并退出 boolean isValid = isValidDate(toTest); - if (!isValid) { + if(!isValid){ Toolkit.getDefaultToolkit().beep(); return; } @@ -127,9 +123,9 @@ public class JDateDocument extends PlainDocument { super.insertString(newOffset, s, attributeSet); } //如果插入长度10 - else if (s.length() == 10 || s.length() == 19) { + else if(s.length() == 10 || s.length() == 19){ //合法则显示,否则给出提示退出 - if (!isValidDate(s)) { + if(!isValidDate(s)){ Toolkit.getDefaultToolkit().beep(); return; } @@ -147,12 +143,12 @@ public class JDateDocument extends PlainDocument { ** 返回值:无 ** 调用者:insertString(int, String,AttributeSet) ***********************************************************************************/ - public void remove(int offset, int length) throws BadLocationException { + public void remove(int offset, int length) throws BadLocationException{ //如果插入位置在"-"前,则回退一个光标位置 //yyyy-MM-dd HH:mm:ss - if (offset == 4 || offset == 7 || - offset == 10 || offset == 13 || - offset == 16) + if(offset == 4 || offset == 7 || + offset == 10 || offset == 13 || + offset == 16) textComponent.setCaretPosition(offset - 1); else textComponent.setCaretPosition(offset); @@ -167,32 +163,32 @@ public class JDateDocument extends PlainDocument { ** 返回值:boolean型,真,表示是合法的,假,表示不合法 ** 调用者:insertString(int, String,AttributeSet) ***********************************************************************************/ - private boolean isValidDate(String strDate) { + private boolean isValidDate(String strDate){ int intY, intM, intD; //年,月,日,时,分,秒的值 int intH = 0, intMi = 0, intS = 0; int iCaretPosition; //光标位置 int iPatternLen = getDateFormat().toPattern().length(); //获取字符串 - if (strDate == null) { + if(strDate == null){ return false; } strDate = strDate.trim(); //如果为空,长度不对,则为非法,返回false - if (strDate.length() != iPatternLen) { + if(strDate.length() != iPatternLen){ return false; } //如果是全角字符,则返回false - for (int i = 0; i < 10; i++) { - if (((int) strDate.charAt(i)) > 255) { + for(int i = 0; i < 10; i++){ + if(((int)strDate.charAt(i)) > 255){ return false; } } //取年,月,日的值 - try { + try{ intY = Integer.parseInt(strDate.substring(0, 4)); intM = Integer.parseInt(strDate.substring(5, 7)); intD = Integer.parseInt(strDate.substring(8, 10)); - } catch (Exception e) { + } catch(Exception e){ //失败则返回false return false; } @@ -201,23 +197,23 @@ public class JDateDocument extends PlainDocument { boolean isValid = true; //月越界 - if (intM > 12 || intM < 1) { + if(intM > 12 || intM < 1){ intM = Math.min(12, Math.max(1, intM)); isValid = false; } //根据月份,判断日期输入,如越界,则修改 - if (intD < 1) { + if(intD < 1){ intD = 1; isValid = false; } - switch (intM) { + switch(intM){ case 4: case 6: case 9: case 11: //最大天数为30天 //如果输入大于30,则修改为30 - if (intD > 30) { + if(intD > 30){ intD = 30; isValid = false; } @@ -225,15 +221,15 @@ public class JDateDocument extends PlainDocument { case 2: //2月份 //区别闰年 - if ((intY % 4 == 0 && intY % 100 != 0) || intY % 400 == 0) { + if((intY % 4 == 0 && intY % 100 != 0) || intY % 400 == 0){ //如果输入大于29,则修改为29 - if (intD > 29) { + if(intD > 29){ intD = 29; isValid = false; } - } else { + } else{ //如果输入大于28,则修改为28 - if (intD > 28) { + if(intD > 28){ intD = 28; isValid = false; } @@ -242,7 +238,7 @@ public class JDateDocument extends PlainDocument { default: //最大天数为31天 //如果输入大于31,则修改为31 - if (intD > 31) { + if(intD > 31){ intD = 31; isValid = false; } @@ -250,43 +246,43 @@ public class JDateDocument extends PlainDocument { // System.err.println("out:intY="+intY+",intM="+intM+",intD="+intD); //yyyy-MM-dd HH:mm:ss - if (iPatternLen > 10) { - try { + if(iPatternLen > 10){ + try{ intH = Integer.parseInt(strDate.substring(11, 13)); intMi = Integer.parseInt(strDate.substring(14, 16)); intS = Integer.parseInt(strDate.substring(17)); - } catch (Exception e) { + } catch(Exception e){ return false; } //时越界 - if (intH > 23 || intH < 0) { + if(intH > 23 || intH < 0){ intH = Math.min(23, Math.max(0, intH)); isValid = false; } //分越界 - if (intMi > 59 || intMi < 0) { + if(intMi > 59 || intMi < 0){ intMi = Math.min(59, Math.max(0, intMi)); isValid = false; } //秒越界 - if (intS > 59 || intS < 0) { + if(intS > 59 || intS < 0){ intS = Math.min(59, Math.max(0, intS)); isValid = false; } } - if (!isValid) { + if(!isValid){ textComponent.setText(toDateString(intY, intM, intD, intH, intMi, - intS)); + intS)); textComponent.setCaretPosition(iCaretPosition + 1); } return isValid; } - private String toDateString(int y, int m, int d, int h, int mi, int s) { + private String toDateString(int y, int m, int d, int h, int mi, int s){ m = Math.max(1, Math.min(12, m)); //最大天数为31天 d = Math.max(1, Math.min(31, d)); - switch (m) { + switch(m){ case 4: case 6: case 9: @@ -296,9 +292,9 @@ public class JDateDocument extends PlainDocument { case 2: //润年 - if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) { + if((y % 4 == 0 && y % 100 != 0) || y % 400 == 0){ d = Math.min(29, d); //最大天数为29天 - } else { + } else{ d = Math.min(28, d); //最大天数为28天 } break; @@ -314,18 +310,18 @@ public class JDateDocument extends PlainDocument { String strDate; strDate = strY + strPattern.substring(4, 5) - + strM + strPattern.substring(7, 8) + strD; - if (strPattern.length() == 19) { + + strM + strPattern.substring(7, 8) + strD; + if(strPattern.length() == 19){ strDate += strPattern.substring(10, 11) - + rPad0(2, "" + h) + strPattern.substring(13, 14) - + rPad0(2, "" + mi) + strPattern.substring(16, 17) - + rPad0(2, "" + s); + + rPad0(2, "" + h) + strPattern.substring(13, 14) + + rPad0(2, "" + mi) + strPattern.substring(16, 17) + + rPad0(2, "" + s); } return strDate; } - private String rPad0(int maxLen, String str) { - if (str.length() < maxLen) { + private String rPad0(int maxLen, String str){ + if(str.length() < maxLen){ str = "0" + str; } return str;