import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
class Login extends JFrame implements ActionListener{
JPanel panel_top;
JPanel panel_center;
JPanel panel_bottom;
JPanel last;
JLabel username;
JTextField username_txt;
JLabel userpwd;
JPasswordField pwd;
JButton ok;
JButton cancel ;
JLabel result;
Login(String name){//构造方法
super(name);
setBounds(700,500,240,200);
setVisible (true );
setResizable(false); //窗口大小不可改变
Container con=this.getContentPane();
con.setLayout(new GridLayout(4,0));
panel_top=new JPanel();
panel_center=new JPanel();
panel_bottom=new JPanel();
last=new JPanel();
username=new JLabel("用户名",10);
username.setBounds(10,10,30,30);
username_txt=new JTextField("请输入您的用户名");
username_txt.setColumns(10);
//定义内部类为用户文本框加鼠标监听
username_txt.addMouseListener(new MouseAdapter(){
public void mouseEntered(MouseEvent e){//鼠标进入某个组件时触发
username_txt.setBackground(Color.LIGHT_GRAY);
}
public void mouseClicked(MouseEvent e){//在某个组件上单击鼠标键时触发
username_txt.setText("");
result.setText("");
username_txt.setBackground(Color.WHITE);
}
public void mouseExited(MouseEvent e){//鼠标离开某个组件时触发
username_txt.setBackground(Color.WHITE);
}
});
//定义内部类为用户名文本框加键盘监听
username_txt.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if (e.getKeyCode()==KeyEvent.VK_ENTER ){//按下某个按键时触发
pwd.requestFocusInWindow();
//pwd.requestFocusInWindow(); 是为pwd.文本框初始化一个输入焦点,
//也就是说当你生成窗口时,不需要用鼠标点击文本框就可以在该文本框text[0]中输入数值。
}
}
});
userpwd=new JLabel("密码");
userpwd.setBounds(10,20,30,30);
pwd=new JPasswordField();
pwd.setColumns(10);//设置此文本字段中的列数。
pwd.setEchoChar('*');
//提示字符,比如你输密码的时候,屏幕不可能让别人看见你输入的密码是什么,但是又必须让你知道你在输密码
//为密码框加键盘监听
pwd.addKeyListener(new KeyAdapter(){
public void keyPressed(KeyEvent e){
if (e.getKeyCode()==KeyEvent.VK_ENTER){//Key.getCode()是返回当前按钮的数值
ok.requestFocusInWindow();//在密码输入后按enter会触发确定按钮
}
}
});
ok=new JButton("确定");
ok.addActionListener(this);
cancel=new JButton("取消");
cancel.addActionListener(this);
result= new JLabel();
panel_top.add(username);
panel_top.add(username_txt);
panel_center.add(userpwd);
panel_center.add(pwd);
panel_bottom.add(ok);
panel_bottom.add(cancel);
last.add(result);
con.add(panel_top);
con.add(panel_center);
con.add(panel_bottom);
con.add(last);
con.validate();
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==ok){
//System.out.println("4444");
result.setText("正在登录验证...");
String name=username_txt.getText().trim();//trim()的方法为去掉字符两端的空格
//System.out.println("输入的用户名为:"+name);
String password=pwd.getText().trim();
Connection con=null;
String sql=null;
ResultSet rs=null;
Statement st=null;
String Login_name;
String Login_password;
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//加载数据库驱动
System.out.println("成功加载MySQL驱动程序");
String url="jdbc:sqlserver://localhost:1433;DatabaseName=mydb";
Login_name="sa";
Login_password="0821";
try{
con=DriverManager.getConnection(url,Login_name,Login_password);//建立连接
System.out.println("成功连接数据库");
}catch(Exception k){
k.printStackTrace();
}
st=con.createStatement();
//创建语句对象
sql="select * from login where username='"+name+"'";
//“ 代表java字符串 ' 代表sql的字符串 + 代表java字符串的连接
result.setText("执行到这里ok");
rs=st.executeQuery(sql);
//执行查询,过调用Statement对象的executeQuery()方法进行数据的查询
/* while(rs.next()){
String Name=rs.getString(1);
String Password=rs.getString(2);
System.out.println(Name+","+Password);
}*/
//System.out.println(rs.getString(1));
//System.out.println(rs.next());
if(rs.next()){ //结果集处理,当SQL语句执行后没有返回的结果集时,该方法返回false
System.out.println(password);
// String Password=rs.getString(2);
System.out.println(rs.getString (2));
if (password.equals("123")){
result.setText("验证通过");
}
else {
result.setText("密码错误,请从新登录!");
pwd.setText("");
}
}
else{
System.out.println(name);
System.out.println(password);
result.setText("用户名错误,请重新登录!");
username_txt.setText("");
pwd.setText("");
}
rs.close();
con.close();
}catch(Exception ex){
result.setText("用户名或密码有误,请重新输入!");
}
}
else if (e.getSource()==cancel){
System.exit(0);
}
}
}
public class TestLogin {
public static void main(String[] args) {
System.out.println("欢迎!");
new Login("登录");
}
}