Swing中的简单日期组件

时间:2015-08-24 17:02:23

标签: java swing date jformattedtextfield

我一直在寻找Date文本字段组件的开源。我尝试了一些,但我正在寻找一个用户必须输入数字的组件。用户无需输入日,月和年的分隔符。例如,对于日期' 08-23-2015' (日期格式为MM-dd-yyyy)用户只需要输入08232015.他不必关心分隔符( - )。

当用户在文本字段中来回移动插入符号时,它应跳过分隔符 例如,

Initial caret position: |08-23-2015
User moves caret right: 0|8-23-2015
User moves caret right: 08-|23-2015
User moves caret left : 0|8-23-2015

此外,它应支持最短日期和最大日期约束。

我创建了一个简单的日期组件,我在这里分享,如果有人正在寻找类似的组件。

它适合以下格式

  • MM-DD-YYYY
  • MM-DD-YY
  • DD-MM-YYYY
  • DD-MM-YY
  • YY-MM-DD

来源链接:https://github.com/ChitrangP/SimpleDateComponent

1 个答案:

答案 0 :(得分:2)

巴迪这是一项重大工作。

  • 第一步

创建一个Number_Filter类(用于检查输入的值是否为数字。) (如果你需要那门课,请问我)

  • 第二步

创建项目并添加必要的组件,包括输入日期的Text box

不要忘记将类添加到项目文件并创建一个对象,如

Number_Filter obj_name = new Number_Filter();
  • 第三步

关于文本框的更改事件 - 添加这么多代码

a)使用

检查数字格式
obj_name(Text_Date); //if not number it should clear the last typed digit/letter

b)检查用户输入的长度,并在第2个之后加上斜线或连字符(/或 - )  数字 - 日期的平均值(DD)

if(Text_Date.gettext.toString.length()==1){  // second position
   Text_Date.settext(Text_Date.gettext.toString+"-")
  }   

对于eg-:如果用户键入28,同时(/或 - )应该添加。(编写与该基础相关的代码

c)应在数字均值(MM)旁边继续相同的过程

if(Text_Date.gettext.toString.length()==4){  // fifth position
   Text_Date.settext(Text_Date.gettext.toString+"-")
  }

对于eg-:如果用户类型02,同时(/或 - )应该添加。(编写与该基础相关的代码)(DD-MM - ) - &gt ;(28-02 - )

c)检查该日期字段中不超过10位的值。如

if(Text_date.gettext.toString.length()>=9){
   //write code for delete the last inputed digit 
 }

仔细阅读,直到这个