A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小忧伤 中级黑马   /  2016-5-30 22:25  /  419 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Demo {
        public static void main(String[] args) {
                new MyFrame().setVisible(true);
        }
}

class MyFrame extends JFrame {
        private JTextField txtBor = new JTextField();//出生日期的文本框
        private JLabel lb2 = new JLabel("你来到地球已经:         天了!");//显示结果的JLabel
        private JLabel lb3 = new JLabel("你来到地球已经:         年 零     天了!");//作业
        public MyFrame(){
                init();
                addComponent();
        }

        private void init() {
               
                //1.设置标题
                this.setTitle("时间都去哪儿了");
                //2.设置大小
                this.setSize(500, 400);
                //3.让窗体居中
                //1).获取Toolkit对象
                Toolkit kit = Toolkit.getDefaultToolkit();//此静态方法会返回一个Toolkit的子类对象
                //2).获取屏幕大小
                Dimension screenSize = kit.getScreenSize();//Dimension类就是封装了一个width和heigth的类;
                System.out.println("屏幕宽度:" + screenSize.width + " 像素");
                System.out.println("屏幕高度:" + screenSize.height + " 像素");
                //3).换算坐标值
                int x = (screenSize.width - this.getWidth()) / 2;//(屏幕宽度 - 窗体宽度) / 2
                int y = (screenSize.height - this.getHeight()) / 2;//(屏幕高度 - 窗体高度) / 2
                //4).为此窗体设置新的坐标值
                this.setLocation(x, y);
               
                //4.设置布局管理器
                this.setLayout(null);
                //5.设置默认关闭行为
                this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               
        }
        private void addComponent() {
                //1.标签
                JLabel lb1 = new JLabel("请输入你的生日:");
                lb1.setBounds(100, 60, 120, 30);
                this.add(lb1);
               
                //2.文本框
               
                txtBor.setBounds(220, 60, 150, 30);
                this.add(txtBor);
               
                //3.结果标签
               
                lb2.setBounds(100, 130, 300, 30);
                this.add(lb2);
               
                //4.年标签
                lb3.setBounds(100, 170, 300, 30);
                this.add(lb3);
                //4.计算按钮
                JButton but = new JButton("计算");
                but.setBounds(300, 220, 70, 30);
                but.addActionListener(new ActionListener(){
                        @Override
                        public void actionPerformed(ActionEvent e) {
                                try {
                                        butClick();
                                } catch (ParseException e1) {
                                        e1.printStackTrace();
                                }
                        }});
                this.add(but);
        }

        //计算按钮
        protected void butClick() throws ParseException {
                //1.获取文本框中的数据
                String dateStr = this.txtBor.getText();
                //2.验证文本格式,内容
                //1).验证第5位和第8位上是否是"-"
                char c1 = dateStr.charAt(4);
                char c2 = dateStr.charAt(7);
                if(c1 != '-' || c2 != '-'){
                        JOptionPane.showMessageDialog(this, "非法的日期格式,请参照:xxxx-xx-xx格式编写!");
                        return;
                }
                //2).验证其它的部分必须为数字
                String year = dateStr.substring(0,4);
                String month = dateStr.substring(5,7);
                String day = dateStr.substring(8);//从8到末尾
               
                if(!checkDate(year) || !checkDate(month) || !checkDate(day)){
                        JOptionPane.showMessageDialog(this, "非法的日期格式,请参照:xxxx-xx-xx格式编写!");
                        return;
                }
                //将String的年月日转换为int的值
                int intYear = Integer.valueOf(year);
                int intMonth = Integer.valueOf(month);
                int intDay = Integer.valueOf(day);
                //3).如果是2月,要判断闰年:闰年2月29天,平年2月28
                String sr = txtBor.getText();
                int s = Intesge.parseInt(sr.subSequence(1, 5));
                //4).如果是小月,日期1--30
                //5).如果是大月,日期1--31
                //6).年份必须大于等于1970,并且小于今天的年份
               
                //7).计算生日的毫秒值:String-->Date-->毫秒值
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                Date borDate = sdf.parse(dateStr);//将String转换为Date
                long mi1 = borDate.getTime();
                //8).计算当前时间的毫秒值
                long mi2 = System.currentTimeMillis();
                //9).计算出生到现在的天数
                int days = (int)((mi2 - mi1) / 1000 / 3600 / 24);
                //10).设置标签
                this.lb2.setText("你来到地球已经:" + days + " 天了!");
       
        }
        //编写一个方法,可以验证一个字符串中是否全部是数字字符
        public static boolean checkDate(String dateStr){
                for(int i = 0;i < dateStr.length(); i++){//遍历字符串
                        char c = dateStr.charAt(i);
                        if(c < '0' || c > '9'){
                                return false;//表示:包含了非法的非数字字符
                        }
                }
                return true;//表示:包含的全部都是数字字符
        }

}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马