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



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();//匿名实例化本类
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

King·Forward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值