⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zsdatetimetext.java

📁 DB日期编辑控件继承ZsDateTimeText
💻 JAVA
字号:
package wisesoft;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

/**
 * <p>日期编辑控件 </p>
 * <p>可选择或直接输入日期,日期格式有两种:ZsDateTime.C_Date_Type 'YYYY-MM-DD'
 *                                  ZsDateTime.C_DateTime_Type 'YYYY-MM-DD hh24:mi:ss' </p>
 * <p>Copyright: Copyright (wisesoft) 2003</p>
 * <p>Company: </p>
 * @bearking 熊运余 20050401
 * @version 1.0
 */

public class ZsDateTimeText extends ZSComboTextField  {//implements FocusListener
  int iYear,iMonth,iDay,iHour=1,iMinute=1,iSecond=1;
  BorderLayout borderLayout1 = new BorderLayout();
  boolean bCheckFlag=true;//暂时解决执行两次失去焦点事件
  private String dateText;
  private int iDateType=ZsDateTime.C_DateTime_Type;

  public ImageIcon buttonicon;//设置按钮图标

  private transient Vector focusListeners;
    public ZsDateTimeText() {
    try {
      jbInit();
    }
    catch(Exception ex) {
      ex.printStackTrace();
    }
  }
  /**获取时间*/
  public String GetDate()
  {
    ////C_Date_Type YYYY-MM-DD C_DateTime_Type YYYY-MM-DD hh24:mi:ss
    if(iDateType==ZsDateTime.C_Date_Type)
    {
      return ZSCom_Func.addleftchar(String.valueOf(iYear),4,'0')+"-"+
             ZSCom_Func.addleftchar(String.valueOf(iMonth),2,'0')+"-"+
             ZSCom_Func.addleftchar(String.valueOf(iDay),2,'0');
    }
    else
    {
      return ZSCom_Func.addleftchar(String.valueOf(iYear),4,'0')+"-"+
             ZSCom_Func.addleftchar(String.valueOf(iMonth),2,'0')+"-"+
             ZSCom_Func.addleftchar(String.valueOf(iDay),2,'0')+" "+
             ZSCom_Func.addleftchar(String.valueOf(iHour),2,'0')+":"+
             ZSCom_Func.addleftchar(String.valueOf(iMinute),2,'0')+":"+
             ZSCom_Func.addleftchar(String.valueOf(iSecond),2,'0');
    }
  }

  //判定当前录入日期是否正确
  /**校验字符串格式日期是否格式正确,iType=1 'YYYY-MM-DD' iType=2 'YYYY-MM-DD hh24:mi:ss'*/
  public boolean check(String sDate,int iType)
  {
    try
    {
      String tmpStr = sDate.trim();
      int iPos;
      //判定类型如果是日期,则"-"为分隔符号

      iPos = tmpStr.indexOf("-");
      //取年
      iYear = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));
      if(iYear>9999 || iYear<0) return false;
      //取月
      tmpStr = tmpStr.substring(iPos + 1, tmpStr.length());
      iPos = tmpStr.indexOf("-");
      iMonth = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));
      if(iMonth>12 || iMonth<0) return false;
      //取日
      tmpStr = tmpStr.substring(iPos + 1, tmpStr.length());
      if (iType == ZsDateTime.C_Date_Type) {
        iDay = ZSCom_Func.StringToInt(tmpStr);
        if(iDay>31 || iDay<0) return false;//没考虑特殊情况,做了简要判定
        return true;
      }
      else { //时间类型 hh24:mi:ss
        iPos = tmpStr.indexOf(" ");
        iDay = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));

        tmpStr = tmpStr.substring(iPos + 1, tmpStr.length()).trim();
        iPos = tmpStr.indexOf(":");
        //取小时
        iHour = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));
        if(iHour>23 || iHour<0) return false;
        //取分钟
        tmpStr = tmpStr.substring(iPos + 1, tmpStr.length());
        iPos = tmpStr.indexOf(":");
        iMinute = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));
        if(iMinute>59 || iMinute<0) return false;
        //取秒
        tmpStr = tmpStr.substring(iPos + 1, tmpStr.length());
        iSecond = ZSCom_Func.StringToInt(tmpStr.substring(0, iPos));
        if(iSecond>59 || iSecond<0) return false;

        return true;
      }
    }
    catch(Exception ex)
    {
      return false;
    }
  }
  private void jbInit() throws Exception {
    this.setEnabled(true);
    m_imageSelect = new ImageIcon(testZsComboEdit.class.getResource("date.png"));
    //this.addFocusListener(new ZsDateTimeText_this_focusAdapter(this));
    this.addMouseListener(new ZsDateTimeText_this_mouseAdapter(this));
    this.setFieldText("2005-12-12 12:12:12");
    jTextField1.addFocusListener(new ZsDateTimeText_focusAdapter(this));
    JButton1.setIcon(m_imageSelect);
    //
  }
  /**得到日期文本,得到日期文本先调用check()检验日期是否正确*/
  public String getDateText() {
    dateText=jTextField1.getText();
    return dateText;
  }
  /**设置日期文本*/
  public void setDateText(String dateText) {
    this.dateText = dateText;
  }
  /**得到日期类型,1='YYYY-MM-DD',2='YYYY-MM-DD hh24:mi:ss' */
  public int getDateType() {
    return iDateType;
  }
  /**设置日期类型,1='YYYY-MM-DD',2='YYYY-MM-DD hh24:mi:ss' */
  public void setDateType(int DateType) {
    this.iDateType = DateType;
  }
  /**判定一类名是否是Frame或Dlg*/
  int isFrameOrDlg(String classname)//string,0,非,1,是Frame,2是Dialog
  {
    try
    {
      if (classname.indexOf("JDialog")>0)
      {
        return 1;
      }
      else if (classname.indexOf("JFrame")>0)
      {
        return 2;
      }
      return 0;
    }
    catch(Exception ex)
    {
      return 0;
    }
  }
  /**得到一个容器的最上级容器*/
  Container getPar(Container m_par)
  {
    try
    {
      if (isFrameOrDlg(m_par.getClass().getSuperclass().getName()) > 0) {
        return m_par;
      }
      else  return getPar(m_par.getParent());
    }
    catch (Exception ex)
    {
      return null;
    }
  }
  /**弹出日期选择窗口*/
  void this_mouseClicked(MouseEvent e) {
    ZsDateTime m_date;

    Container m_parent=getPar(this.getParent());
    //设置父窗体
    if(m_parent!=null)
    {
      if (isFrameOrDlg(m_parent.getClass().getSuperclass().getName())==1)
      {
         m_date=new ZsDateTime((JDialog)getPar(this.getParent()),"请选择日期",true);//Dialog
      }
      else
      {
         m_date=new ZsDateTime((JFrame)getPar(this.getParent()),"请选择日期",true); //Frame
      }
    }
    else  m_date=new ZsDateTime();


    m_date.iResultType=iDateType;
    if(check(jTextField1.getText(),iDateType))
    {
      m_date.setDate(iYear,iMonth,iDay,iHour,iMinute,iSecond);
    }
    else
    {
      Calendar calendar = Calendar.getInstance();
      m_date.setDate(calendar);
    }
    m_date.setSize(200,230);
    m_date.setModal(true);
    Dimension dimDlg = m_date.getSize();

    m_date.iResultType=this.iDateType;
    Point loc = this.getLocationOnScreen();
    m_date.setLocation(loc.x,loc.y+this.getHeight());
    m_date.showDate();
    //m_date.setti
    m_date.show();
    this.jTextField1.setText(m_date.GetDate());




  }
  /**焦点失去,判断文本是否合法日期*/
  void jTextField1_focusLost(FocusEvent e) {
    //暂时解决执行两次的问题
    if(!bCheckFlag)
    {
      bCheckFlag=true;
      return;
    }
    else bCheckFlag=false;
     //
    if(!check(jTextField1.getText(),iDateType))
    {
      if (iDateType==ZsDateTime.C_Date_Type)
      {
        ZSCom_Func.Showmessage("日期格式不对,标准格式是'YYYY-MM-DD',示例'2005-01-09'", "提示");
      }
      else
      {
        ZSCom_Func.Showmessage("日期格式不对,标准格式是'YYYY-MM-DD hh24:mi:ss',示例'2005-01-09 01:01:01'", "提示");
      }
    }
    else
    {
      jTextField1.setText(GetDate()); //格式化日期
    }
   }
}

class ZsDateTimeText_this_mouseAdapter extends java.awt.event.MouseAdapter {
  ZsDateTimeText adaptee;

  ZsDateTimeText_this_mouseAdapter(ZsDateTimeText adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseClicked(MouseEvent e) {
    adaptee.this_mouseClicked(e);
  }
}



  class ZsDateTimeText_focusAdapter extends java.awt.event.FocusAdapter {
  ZsDateTimeText adaptee;
  ZsDateTimeText_focusAdapter(ZsDateTimeText  adaptee) {
    this.adaptee = adaptee;
  }
  public void focusLost(FocusEvent e) {
    adaptee.jTextField1_focusLost(e);
  }
}
   //


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -