自己用awt实现界面输入数据保存到Excel文件中

来源:互联网 发布:语音接听电话软件 编辑:程序博客网 时间:2024/05/17 01:57



package com;import java.awt.Button;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Frame;import java.awt.Label;import java.awt.TextField;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.FocusAdapter;import java.awt.event.FocusEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.util.HashMap;import java.util.Map;import java.util.Set;import java.util.Map.Entry;import javax.swing.JOptionPane;/** * 在生活中,我们很多时候会遇到数据的格式化,比如将表单数据录入数据库, * 将表单数据读入到Excel,将数据库数据格式化到Excel表格......因为考虑到大家的水平高低,因而将该题按难易程度分为以下几种:1、将网页表单内容(含用户名、密码、性别、邮箱)按提交时能将里面的数据直接格式化到一个Excel表格中!(本题在客户端需对表单内容进行校验,用户名5--8位,由数字和字母组成,不能以0开头;密码只能是数字、字母、_,7--15位;邮箱也需进行格式验证)------总分12分2、将数据库中的内容格式化到Excel中,数据库直接使用XML,数据内容同上;------总分8分3、如果以上知识都没学到,可以使用java基础的知识直接做数据的录入,将数据格式化到Excel中,如果录入到Excel中不会的,可以选择录入到word中(采用此种方式做的,用图形界面或录入到Excel与不使用图形界面或直接录入到word中都会有分值的差别,大家注意录入后的格式)------总分5分注:1、大家做的项目在提交时都以自己的真实姓名命名,否则在得分基础上扣2分,在自己的项目中用“说明.txt”文档写明自己做的是上面3中模式中的哪一种,并简要说明自己几个项目中的几个主类及其作用,以及自己已经达到的效果和自身项目的缺陷;2、不论采用上面的那种模式,数据均为用户名、密码、性别、邮箱四项,并有以下要求,用户名5--8位,由数字和字母组成,不能以0开头;密码只能是数字、字母、_,7--15位;邮箱也需进行格式验证!3、之所以将一个题目分为3种类型,就是考虑到大家的水平高低,最后希望大家都能踊跃的参与进来,拿自己实力应得的分数!!!提示:录入到Excel大家可以参考POI组件!评分标准:功能实现、设计思想、代码体现、文中注释! * @author wjw * */public class Title_12 {private Frame frame;private Label lab_name,lab_password,lab_sex,lab_email;private TextField tf_name,tf_password,tf_sex,tf_email;private Button b_submit,b_clear;private Map<String,String> map=new HashMap<String,String>();//定义HashMap集合用来存储输入进来的数据public Title_12(){init();}//页面初始化public void init(){frame=new Frame("wjw_java版的数据存储------------Excel");frame.setSize(400,200);frame.setResizable(false);//设定窗体大小固定,不可随便改变大小frame.setVisible(true);//获取屏幕尺寸Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize();  frame.setLocation((int)(screensize.getWidth()/2)-200,(int)(screensize.getHeight()/2)-175);frame.setLayout(new FlowLayout());//四个Label标签实例化lab_name=new Label("-------->>用  户  名:");lab_password=new Label("-------->>密        码:");lab_sex=new Label("-------->>性        别:");lab_email=new Label("-------->>邮箱地址:");//四个输入框实例化tf_name=new TextField(30);tf_password=new TextField(30);tf_sex=new TextField(30);tf_email=new TextField(30);//提交按钮实例化b_submit=new Button("提交数据");//清空数据b_clear=new Button("清空数据");//依次添加到Frame上//用户名frame.add(lab_name);frame.add(tf_name);//密码frame.add(lab_password);frame.add(tf_password);//性别frame.add(lab_sex);frame.add(tf_sex);//邮箱frame.add(lab_email);frame.add(tf_email);//添加提交按钮frame.add(b_submit);frame.add(b_clear);event();}//添加事件public void event(){//窗体添加关闭按钮事件frame.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent arg0) {System.exit(0);}});//验证用户名tf_name.addFocusListener(new FocusAdapter(){//当获取焦点时public void focusGained(FocusEvent e){//if(!"".equals(str)){//str="";//}//JOptionPane.showMessageDialog(frame,"用户名不能为空");}//当失去焦点时public void focusLost(FocusEvent e) {String str=tf_name.getText(); String regex="[a-zA-Z1-9][a-zA-Z0-9]{4,7}";if(!"".equals(str)){if(str.matches(regex)){map.put("用户名",str);//把用户名放入HashMap}else{JOptionPane.showMessageDialog(frame,"用户名格式错误,请按照\"用户名5--8位,由数字和字母组成,不能以0开头\"格式填写");tf_name.setText("");//把错误的数据置空//tf_name.requestFocus();//获取焦点}} }});//验证密码tf_password.addFocusListener(new FocusAdapter(){//当获取焦点时public void focusGained(FocusEvent e){}//当失去焦点时public void focusLost(FocusEvent e) {String str=tf_password.getText();String regex="[a-zA-Z1-9_]{7,15}";if(!"".equals(str)){if(str.matches(regex)){map.put("密  码",str);//把密码放入HashMap}else{JOptionPane.showMessageDialog(frame,"密码格式错误,请按照\"只能是数字、字母、_\"格式填写");tf_password.setText("");//把错误的数据置空}}}});//验证性别tf_sex.addFocusListener(new FocusAdapter(){//当获取焦点时public void focusGained(FocusEvent e){}//当失去焦点时public void focusLost(FocusEvent e) {String str=tf_sex.getText();if(!"".equals(str)){if(str.equals("male")){map.put("性  别",str);//把性别放入HashMap}else if(str.equals("female")){map.put("性  别",str);//把性别放入HashMap}else{JOptionPane.showMessageDialog(frame,"性别格式错误,请按照\"male或者female\"格式填写");tf_sex.setText("");//把错误的数据置空}} }});//验证邮箱tf_email.addFocusListener(new FocusAdapter(){//当获取焦点时public void focusGained(FocusEvent e){}//当失去焦点时public void focusLost(FocusEvent e) {String str=tf_email.getText();String regex="^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";if(!"".equals(str)){if(str.matches(regex)){map.put("邮  箱",str);//把邮箱放入HashMap}else{JOptionPane.showMessageDialog(frame,"邮箱格式错误,请按照\"邮箱\"格式填写");tf_email.setText("");//把错误的数据置空}} }});//提交按钮b_submit.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String str="";if(tf_name.getText().equals("")||tf_password.getText().equals("")||tf_sex.getText().equals("")||tf_email.getText().equals("")){JOptionPane.showMessageDialog(frame,"用户名或者密码或者性别或者邮箱为空,请填写");}else{File f=new File("c:/wjw_java/data.xls");if(!f.getParentFile().exists()){//判断上级目录是否存在f.getParentFile().mkdir();//如果不存在就创建目录}BufferedWriter bw=null;try {bw = new BufferedWriter(new FileWriter(f));Set<Entry<String,String>> set=map.entrySet();for (Entry<String, String> entry : set) {str=entry.getKey()+":"+entry.getValue();try {bw.write(str);bw.newLine();//添加换行bw.flush();//刷新} catch (IOException e1) {e1.printStackTrace();}System.out.println(entry.getKey()+":"+entry.getValue());//打印到控制台}}catch (IOException e2) {JOptionPane.showMessageDialog(frame,"文件已打开,程序不能操作文件,请关闭data.xls文件");throw new RuntimeException("文件已打开,程序不能操作文件,请关闭data.xls文件");}finally{try {if(null!=bw){bw.close();//关闭输出流}} catch (IOException e1) {e1.printStackTrace();}}JOptionPane.showMessageDialog(frame,"数据已经传入到\"c:/wjw_java/data.xls\"路径下,请查看");}}});//清空数据b_clear.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {tf_name.setText("");tf_password.setText("");tf_sex.setText("");tf_email.setText("");}});}public static void main(String[] args) throws IOException {new Title_12();//匿名实例化本类}}