代码功能:
1、点击JFrame窗口中的登录按钮 读取文件中数据实现登录
2、点击JFrame窗体中的注册按钮 写入文件中数据实现登录
注意:
1、只能在文件中插入一组数据,通过这一组数据来实现登录
2、注册时插入的数据不能为空
3、如果注册失败,点击登录按钮会出错(因为注册失败后,文件中数据为空,无法读取数据)
4、只在一个文件 Start.java 中实现
5、使用IO流 + 匿名内部类监听 + 窗体 实现
代码如下:
package com.ludx.job;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
//登录注册的页面
public class Start implements ActionListener{
public static void main(String[] args) throws IOException{
Start st = new Start();
st.init();
System.out.println("---------------------注册失败时不可登录--------------------"); //注册失败时文件为空,无数据
}
//用户名和密码为全局变量
JTextField text1 = new JTextField(10);
JPasswordField text2 = new JPasswordField(10);
File file1 = new File("D:\\cm\\user.txt"); //创建File文件
JLabel label = new JLabel(); //创建标签
//初始化窗体
public void init() throws IOException{
//创建窗体 面板 标签 按钮 文本输入框 密码输入框
JFrame f = new JFrame();
JPanel p = new JPanel();
JLabel la1 = new JLabel("用户名:");
JLabel la2 = new JLabel("密码:");
JButton b1 = new JButton("登录");
JButton b2 = new JButton("注册");
p.add(la1);
p.add(text1);
p.add(la2);
p.add(text2);
p.add(b1);
p.add(b2);
p.add(label);
f.add(p);
f.setVisible(true); //可见
f.setTitle("登录注册"); //标题
f.setSize(500,300); //大小
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭后台
f.setResizable(false); //不可改变
f.setLocation(430, 150); //窗体位置
f.setIconImage(ImageIO.read(new File("images/hdjs.jpg"))); //窗体图标
//注册----------写入文件用户名和密码 (匿名内部类)
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try {
String s3 = text1.getText(); //获取文本输入框的用户名
String s4 = text2.getText(); //获取文本输入框的密码
//创建字节输出流FileOutputStream
FileOutputStream fos = new FileOutputStream(file1);
//创建字符输出流OutputStreamWriter
OutputStreamWriter osw = new OutputStreamWriter(fos);
//创建字符缓冲输出流BufferedWriterd
BufferedWriter bw = new BufferedWriter(osw);
if(s3 == null || s3.length() <=0||s4 ==null ||s4.length()<=0){ //判空
label.setText("注册失败");
label.setForeground(Color.black);
System.out.println("注册失败:输入不能为空!");
}else{
bw.write(s3); //把输入的用户名写到文件中
bw.newLine();
bw.write(s4); //把输入的密码写到文件中
bw.newLine();
label.setText("注册成功");
label.setForeground(Color.black);
System.out.println("注册成功的用户名为:"+s3);
System.out.println("注册成功的密码为:"+s4);
bw.close(); //关闭流
}
} catch (Exception e1) {
e1.printStackTrace();
label.setText("注册失败");
label.setForeground(Color.black);
System.out.println("注册失败:数据未插入到文件中!");
}
}
});
//登录 ----------读取文件中用户名密码 绑定监听事件
外汇经纪商动态http://www.kaifx.cn/lists/news/
b1.addActionListener(this);
}
//绑定登录按钮(读取文件中已有的用户名和密码)
//实现ActionListener接口后,强制要求重写的方法
public void actionPerformed(ActionEvent e) {
try{
String s1 = text1.getText(); //获取文本输入框的用户名
String s2 = text2.getText(); //获取文本输入框的密码
//创建字节输入流FileInputStream
FileInputStream fis = new FileInputStream(file1);
//创建字符输入流InputStreamReader
InputStreamReader isr = new InputStreamReader(fis);
//创建字符缓冲输入流BufferedReader
BufferedReader br = new BufferedReader(isr);
String m1 = br.readLine(); //读取文件中用户名 ; 不行,要定义为全局变量
String m2 = br.readLine(); //读取文件中密码
System.out.println("文件中的用户名为:"+m1);
System.out.println("文件中的密码为:"+m2);
if(m1.equals(s1) && m2.equals(s2)){
label.setText("登录成功");
label.setForeground(Color.black);
System.out.println("登录成功的用户名为:"+s1);
System.out.println("登录成功的密码为:"+s2);
}else{
label.setText("登录失败");
label.setForeground(Color.black);
System.out.println("登录失败:输入的用户名或密码不正确!");
}
//关闭流
br.close();
}catch (Exception e1) {
e1.printStackTrace();
}
}
}
|
|