下面是完整代码麻烦大佬们看看
package Test3;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLNonTransientException;
import java.sql.Statement;
import java.sql.SQLException;
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.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.Spring;
import javax.swing.SpringLayout;
import javax.swing.border.EmptyBorder;
import javax.swing.SwingConstants;
import java.awt.FlowLayout;
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
public class Login<CarCard> extends JFrame implements ActionListener{
private static final long serialVersionUID = 1L;
private Login log;
public Login(Login login) {
// TODO 自动生成的构造函数存根
this.log=login;
}
//定义控件
JPanel jp1;
JLabel id,pw,title;
JButton login,restart;
JTextField id_t;
JPasswordField pw_t;
SpringLayout springLayout = new SpringLayout();
public Login() {
init();
this.setVisible(true);
//窗口大小不可变
setResizable(false);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void init() {
id = new JLabel("账号:");
pw = new JLabel("密码:");
title = new JLabel("学生信息管理系统");
jp1 = new JPanel(springLayout);
id_t = new JTextField(15);
pw_t = new JPasswordField(15);
login = new JButton("登录");
restart = new JButton("重置");
//监听jb1按钮
login.addActionListener(this);
restart.addActionListener(this);
//获取内容面板
Container contentPane = getContentPane();
id_t.setPreferredSize(new Dimension(200,30));
pw_t.setPreferredSize(new Dimension(200,30));
//jpanel.add(title,jpanel.CENTER_ALIGNMENT);
jp1.add(id);
id.setPreferredSize(new Dimension(200,30));
jp1.add(id_t);
jp1.add(pw);
pw_t.setPreferredSize(new Dimension(200,30));
jp1.add(pw_t);
jp1.add(login);
jp1.add(restart);
jp1.add(title);
id.setFont(new Font("微软雅黑",Font.PLAIN,18));
pw.setFont(new Font("微软雅黑",Font.PLAIN,18));
title.setFont(new Font("微软雅黑",Font.PLAIN,28));
springLayout.putConstraint(springLayout.WEST, id, -100, springLayout.HORIZONTAL_CENTER, jp1);
springLayout.putConstraint(springLayout.NORTH, id, -200, springLayout.HORIZONTAL_CENTER, jp1);
//五个参数,控件的边,控件,距离,相对物品的边,相对物品
springLayout.putConstraint(springLayout.WEST, id_t, -150, springLayout.EAST, id);
springLayout.putConstraint(springLayout.NORTH, id_t, 0, springLayout.NORTH, id);
springLayout.putConstraint(springLayout.WEST, pw_t, 0, springLayout.WEST, id_t);
springLayout.putConstraint(springLayout.NORTH, pw_t, 0, springLayout.NORTH, pw);
springLayout.putConstraint(springLayout.WEST, pw, -100, springLayout.HORIZONTAL_CENTER, jp1);
springLayout.putConstraint(springLayout.NORTH, pw, -140, springLayout.HORIZONTAL_CENTER, jp1);
//放置button,相对于中心
springLayout.putConstraint(springLayout.EAST, login, 10, springLayout.HORIZONTAL_CENTER, jp1);
springLayout.putConstraint(springLayout.NORTH, login, 40, springLayout.SOUTH, pw);
springLayout.putConstraint(springLayout.WEST, restart, 40, springLayout.HORIZONTAL_CENTER, jp1);
springLayout.putConstraint(springLayout.NORTH, restart, 40, springLayout.SOUTH, pw);
//放置title
springLayout.putConstraint(springLayout.WEST, title, -5, springLayout.WEST, id);
springLayout.putConstraint(springLayout.SOUTH, title, -40, springLayout.NORTH, id);
//将中间容器放入内容面板
contentPane.add(jp1,BorderLayout.CENTER);
}
//事件监听
@Override
public void actionPerformed(ActionEvent e) {
//未连接数据库时测试用户名和密码
//String ad = "admin";
//String psw = "123456";
//判断是否为重置按钮
if (e.getSource() == restart) {
id_t.setText("");
pw_t.setText("");
}
//登录
if (e.getSource() == login) {
//获取输入的账号密码
String id_s = id_t.getText();
String pw_s = pw_t.getText();
//测试输入的账号密码是否获取成功
System.out.print(id_t.getText());
System.out.print(pw_t.getText());
//定义用于获取用户名和密码的变量
String name = null;
String pwd = null;
//定义连接数据库的变量
Statement stat = null;
Connection ct = null;
PreparedStatement stmt =null;
PreparedStatement pstm = null;
try{
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库加载成功");
//2.连接数据库
//定义几个常量
String url = "jdbc:mysql://localhost:3306/students";
String user = "root";
String passwd = "123456";
ct = DriverManager.getConnection(url,user,passwd);
String sql = "select lname,lpws from login where lname = ? and lpws = ?";
System.out.println("数据库链接成功");
pstm = ct.prepareStatement(sql);
pstm.setString(1,"name");
pstm.setString(2,"pwd");
pstm.executeQuery();
//判断用户名密码是否获取成功
System.out.print(name);
System.out.print(name);
if(id_s.equals(name)){
if(pw_s.equals(pwd)){
StuMain stu =new StuMain();
this.dispose();
}else{JOptionPane.showMessageDialog(login, "密码错误!!!");}
}else{JOptionPane.showMessageDialog(login, "用户名不存在!!!");}
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e1) {
e1.printStackTrace();
}finally{
if(ct != null)
try{//关闭连接
ct.close();
} catch (SQLException e1)
{
e1.printStackTrace();
}
}
}//if的括号
}//action这个类
}//z最大