介绍
注册登陆小界面,实现了:
- 用户的登陆,包括:
- 验证用户名密码是否为空
- 验证用户名和密码是否正确
- 清空输入框
- 用户的注册,包括:
- 产生新的注册框
- 验证注册用户名密码是否为空
- 验证密码和确认密码是否一致
- 验证用户名是否已存在
- 清空输入框
- 退出,包括
- 退出当前窗口
0. 先放结果图
1. 数据库描述
- 用的是 MySQL
CREATE DATABASE info;
CREATE TABLE info(username VARCHAR(20),password VARCHAR(20));
2. GetConnection 类
- 获得数据库连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class GetConnection {
private static Connection conn = null;
static {
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/info", "root", "root");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static Connection getConn() {
return conn;
}
}
3. test 类
- 实现了登陆界面的绘制
- 实现了登陆和退出的监听器
import java.awt.GridLayout;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class test extends JFrame{
private JTextField tusername = null;
private JPasswordField tpassword = null;
public void launchFrame() {
JPanel p1 = new JPanel();
JPanel p2 = new JPanel();
JPanel p3 = new JPanel();
tusername = new JTextField(15);
tpassword = new JPasswordField(15);
JButton bRegister = new JButton("注册");
JButton bLand = new JButton("登陆");
JButton bExit = new JButton("退出");
setLayout(new GridLayout(4,2));
p1.add(new JLabel("用户名: "));
p1.add(tusername);
add(p1);
p2.add(new JLabel("用户密码:"));
p2.add(tpassword);
add(p2);
p3.add(bRegister);
p3.add(bLand);
p3.add(bExit);
add(p3);
bLand.addActionListener(Register());
bRegister.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new Register().launchRegister();
}
});
bExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
setTitle("注册登陆");
pack();
setLocation(300, 300);
setVisible(true);
}
private ActionListener Register() {
return new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = tusername.getText();
String password = tpassword.getText();
if(username.length()==0 || password.length()==0) {
JOptionPane.showMessageDialog(null, "账号或密码不为空!");
Clear();
return ;
}
try {
Connection conn = GetConnection.getConn();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM info");
while(rs.next()) {
if(rs.getString(1).equals(username) && rs.getString(2).equals(password)) {
JOptionPane.showMessageDialog(null, "登陆成功!");
Clear();
return ;
}
}
JOptionPane.showMessageDialog(null, "账号或密码错误!");
} catch (HeadlessException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}finally {
Clear();
}
}
private void Clear() {
tusername.setText("");
tpassword.setText("");
}
};
}
public static void main(String[] args) throws Exception {
new test().launchFrame();
}
}
4. Register 类
- 实现了注册界面
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class Register extends JFrame{
public void launchRegister() {
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
JTextField t1 = new JTextField(15);
JPasswordField t2 = new JPasswordField(15);
JPasswordField t3 = new JPasswordField(15);
JButton b1 = new JButton("注册");
JButton b2 = new JButton("退出");
setLayout(new GridLayout(4,1));
jp1.add(new JLabel(" 用户名:"));
jp1.add(t1);
this.add(jp1);
jp2.add(new JLabel(" 密码:"));
jp2.add(t2);
this.add(jp2);
jp3.add(new JLabel("确认密码:"));
jp3.add(t3);
this.add(jp3);
jp4.add(b1);
jp4.add(b2);
this.add(jp4);
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
String username = t1.getText();
String password = t2.getText();
if(!password.equals(t3.getText())) {
JOptionPane.showMessageDialog(null, "密码不一致,请重新输入");
Clear(t1, t2, t3);
return ;
}
if(username.length()==0 || password.length()==0) {
JOptionPane.showMessageDialog(null, "账号或密码不为空!");
Clear(t1, t2, t3);
return ;
}
try {
Connection conn = GetConnection.getConn();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from info");
while(rs.next()) {
if(rs.getString(1).equals(username)) {
JOptionPane.showMessageDialog(null, "用户已存在!");
Clear(t1, t2, t3);
return ;
}
}
stmt.execute("insert info values('" + username + "','" + password + "')");
JOptionPane.showMessageDialog(null, "注册成功!");
dispose();
} catch (SQLException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "注册失败!");
}
Clear(t1, t2, t3);
}
private void Clear(JTextField t1, JTextField t2, JTextField t3) {
t1.setText("");
t2.setText("");
t3.setText("");
}
});
b2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
this.setLocation(400, 400);
this.pack();
this.setSize(300,300);
this.setVisible(true);
}
}