电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> JSP教程
格式化输入日期时间控件 JieFormattedDateBox-JSP教程,Java技巧及代码
作者:网友供稿 点击:170
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 

格式化输入日期时间控件

可以用jieformatteddatebox box = new jieformatteddatebox("yyyy年mm月dd日hh点mm分ss秒");输入

也可以用jieformatteddatebox box = new jieformatteddatebox("hh:mm:ss");来输入时间

还可以这样用jspinner spinner = new jspinner();jieformatteddatebox fdb = new jieformatteddatebox(format);spinner.setmodel(fdb);spinner.seteditor(fdb);



/////////////////////////////////////////////////package org.jie.ui.formattedbox;

import java.sql.timestamp;import java.text.simpledateformat;

import java.awt.event.focusevent;import java.awt.event.focuslistener;import javax.swing.jformattedtextfield;import javax.swing.spinnermodel;import javax.swing.swingconstants;import javax.swing.swingutilities;import javax.swing.event.changelistener;import javax.swing.event.documentevent;import javax.swing.event.documentlistener;import javax.swing.text.defaultformatterfactory;import javax.swing.text.maskformatter;

public class jieformatteddatebox extends jformattedtextfield implements spinnermodel{

    private string format;    private simpledateformat timeformat;    private timestamp time;

    public void settime(timestamp time){      if(time != null)      setvalue(time);    }    public timestamp gettime(){      return time;    }

  public static string replace(string src,string replacesrc,string replacewith){    if(src == null) return null;    stringbuffer sb = new stringbuffer();    int start = 0;    int end = src.indexof(replacesrc);    while(end >= 0){      sb.append(src.substring(start,end));      start = end+replacesrc.length();      end = src.indexof(replacesrc,start);      sb.append(replacewith);    }    sb.append(src.substring(start));    return sb.tostring();  }

    public jieformatteddatebox(string format){        super();        this.format = format;        timeformat = new simpledateformat(format);        time = new timestamp(system.currenttimemillis());

        try{            string mask = format;            for(int i=0;i<alais.length;i++){                mask = replace(mask,alais[i],formats[i]);            }            maskformatter mf = new maskformatter(mask);            mf.setplaceholdercharacter(_);            setformatterfactory(new defaultformatterfactory(mf));        }catch(exception e){            e.printstacktrace();        }

        settext(timeformat.format(time));        this.getdocument().adddocumentlistener(new documentlistener(){            public void insertupdate(documentevent e){                checktime();            }            public void removeupdate(documentevent e){                checktime();            }            public void changedupdate(documentevent e){}        });        this.sethorizontalalignment(swingconstants.right);        this.addfocuslistener(new focuslistener(){            public void focusgained(focusevent e){}            public void focuslost(focusevent e){                setvalue(time);            }        });    }

    void checktime(){        try{            string text = gettext();            if(text == null || text.equals(""))                return;            time = new timestamp(timeformat.parse(text).gettime());        }catch(exception ex){            try{                swingutilities.invokelater(new runnable() {                    public void run() {                        setvalue(time);                    }                });            }catch(exception e){}        }

    }



    public object getvalue(){        return this.gettext();    }    public void setvalue(object value){        time = (timestamp)value;        int index = this.getcaretposition();        if(time == null){          this.settext("");        }else          this.settext(timeformat.format(time));        this.setcaretposition(index);//keep caret position    }    public object getnextvalue(){        return new timestamp(time.gettime()+getincrease(this.getcaretposition(),format,time));    }    public  object getpreviousvalue(){        return new timestamp(time.gettime()-getdecrease(this.getcaretposition(),format,time));    }    public void addchangelistener(changelistener l){}    public void removechangelistener(changelistener l){}

    static string[] alais = {"yyyy","mm","dd","hh","hh","mm","ss"};    static string[] formats = {"####","##","##","##","##","##","##"};    static long[] times = {0,0,86400000,3600000,3600000,60000,1000};    public static final simpledateformat fulltimeformat = new simpledateformat("yyyy-mm-dd hh:mm:ss");

    public static long getdecrease(int caret,string format,timestamp time){        if(testalias(format,caret,0)){            try{                string timestr = (integer.parseint(new simpledateformat("yyyy").format(time)) - 1)                                 + "-" + new simpledateformat("mm-dd hh:mm:ss").format(time);                return time.gettime() - fulltimeformat.parse(timestr).gettime();            }catch(exception e){                return 1000;            }        }        else if(testalias(format,caret,1)){            try{                simpledateformat ym = new simpledateformat("yyyy-mm");                long thismonth = ym.parse(ym.format(time)).gettime();                long lastmonth = ym.parse(ym.format(new timestamp(thismonth-2*times[2]))).gettime();

                int days = (int)((thismonth-lastmonth)/times[2]);                int thisdays = integer.parseint(new simpledateformat("dd").format(time));                return (thismonth-lastmonth)+(((thisdays > days)?(thisdays-days):0)*times[2]);            }catch(exception e){                return 1000;            }        }        for(int i=2;i<alais.length;i++){            if(testalias(format,caret,i)){                return times[i];            }        }        return 1000;    }

    public static long getincrease(int caret,string format,timestamp time){        if(testalias(format,caret,0)){            try{                string timestr = (integer.parseint(new simpledateformat("yyyy").format(time)) + 1)                                 + "-" + new simpledateformat("mm-dd hh:mm:ss").format(time);                return fulltimeformat.parse(timestr).gettime() - time.gettime();            }catch(exception e){                return 1000;            }        }        else if(testalias(format,caret,1)){            try{                simpledateformat ym = new simpledateformat("yyyy-mm");                long thismonth = ym.parse(ym.format(time)).gettime();                long nextmonth = ym.parse(ym.format(new timestamp(thismonth+31*times[2]))).gettime();                long nextnextmonth = ym.parse(ym.format(new timestamp(nextmonth+31*times[2]))).gettime();

                int days = (int)((nextnextmonth-nextmonth)/times[2]);                int thisdays = integer.parseint(new simpledateformat("dd").format(time));                return (nextmonth-thismonth)-(((thisdays > days)?(thisdays-days):0)*times[2]);            }catch(exception e){                return 1000;            }        }        for(int i=2;i<alais.length;i++){            if(testalias(format,caret,i)){                return times[i];            }        }        return 1000;    }

    private static boolean testalias(string format,int caret,int index){        for(int i=format.indexof(alais[index]);i>=0;i=format.indexof(alais[index],i+1)){            if(caret >= i && caret <= i+alais[index].length())                return true;        }        return false;    }

}

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·IReport与JasperReport开发详解一-JSP教程,Java技巧及代码
·JSTL(JSP标准标签库)介绍-JSP教程,资料/其它
·格式化输入日期时间控件 JieFormattedDateBox-JSP教程,Java技巧及代码
·JSTL简化JSP编码-JSP教程,Jsp/Servlet
·JUnit和单元测试入门简介-JSP教程,Java技巧及代码
·从数据库中读取一个图片并保存为一个图片文件-JSP教程,数据库相关
·Java Swing入门基础-JSP教程,Java技巧及代码
·IntelliJ IDEA培训-JSP教程,Java技巧及代码
·通过JSP的预编译消除性能瓶颈-JSP教程,Jsp/Servlet
·Java中利用JMF编写摄像头拍照程序-JSP教程,Java技巧及代码

最新文章
·J2ME中的时间处理方法
·J2ME播放声音流程简介
·J2ME开发之手机键盘使用注意问题
·J2ME 记录管理存储
·MVC模式在j2me项目中的应用(二)
·MVC模式在j2me项目中的应用(一)
·J2ME中使用记录存储系统(RMS)存储信息
·J2ME与MIDP开发(1)
·用简单的J2ME程序测试MIDlet的生命周期
·JAVA基础:提升JSP应用程序的七大绝招


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号