📄 login.java
字号:
//引入各种此applet程序所需的包
import java.awt.*;
import java.awt.event.*;
import javax.swing.JLabel;//加入jlabel类
import javax.swing.JOptionPane;//加入消息框类
import java.sql.*;//加入连接数据库所用sql包
class Login extends Frame implements ActionListener
{
//域中声明界面上所使用的组件
Button b_login;
Button b_exit;
Button b_register;
TextField t_username;
TextField t_password;
TextField t_message;
JLabel l_title;
JLabel l_name;
JLabel l_pass;
//声明布局所用对象
Insets insert;
GridBagConstraints c;
Font f;
Register r;//声明注册界面对象
Login(final String s)//重写构造方法
{
super(s);
r=new Register("用户注册:");//实现注册界面对象
//实现各种组建
t_username=new TextField("请输入您的用户名!",20);
t_password=new TextField("请输入您的用密码!",20);
t_password.setEchoChar('*');
b_login=new Button("登录");
b_exit=new Button("退出");
b_register=new Button("注册");
b_login.addActionListener(this);
b_exit.addActionListener(this);
b_register.addActionListener(this);
l_name=new JLabel("用户名:");
l_pass=new JLabel("密 码:");
l_title=new JLabel("==用户登录==");
f=new Font("华文新魏",Font.PLAIN,18);
l_title.setFont(f);
l_title.setForeground(Color.blue);
//设置界面布局格式,采用GridBagLayout布局,此布局必须使用GridBagConstraints作限制,GridBagConstraints构造方法参数列表如下:
//GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,fill,inset,ipadx,ipady);
insert=new Insets(3,3,3,3);//设置组建间距
GridBagLayout gbl=new GridBagLayout();
setLayout(gbl);
setResizable(false);
//布局各个组建,并加入此frame
c=new GridBagConstraints(1,0,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_title,c);
add(l_title);
c=new GridBagConstraints(0,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_name,c);
add(l_name);
c=new GridBagConstraints(0,2,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_pass,c);
add(l_pass);
c=new GridBagConstraints(1,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(t_username,c);
add(t_username);
c=new GridBagConstraints(1,GridBagConstraints.RELATIVE,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(t_password,c);
add(t_password);
c=new GridBagConstraints(2,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(b_login,c);
add(b_login);
c=new GridBagConstraints(2,GridBagConstraints.RELATIVE,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(b_register,c);
add(b_register);
insert=new Insets(3,3,8,3);
c=new GridBagConstraints(1,3,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(b_exit,c);
add(b_exit);
setBounds(280,180,300,300);//设置窗体大小
setVisible(true);//设置窗体可见
pack();//剪裁窗体无用空间
setResizable(false);//设置窗体大小不可变
//给窗体添加WindowListener适配器
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);//退出程序
}
}
);
//给文本框添加MouseListener适配器
t_username.addMouseListener(
new MouseAdapter(){
public void mouseClicked(MouseEvent e){
t_username.selectAll();
}
}
);
t_password.addMouseListener(
new MouseAdapter(){
public void mouseClicked(MouseEvent e){
t_password.selectAll();
}
});
}
public void actionPerformed(final ActionEvent e)
{
if(e.getSource()==b_login)//如果事件源是登陆按钮
{
String passw="";
final String JDriver="sun.jdbc.odbc.JdbcOdbcDriver"; //声明jdbc驱动程序类型
final String conURL="jdbc:odbc:UserDB"; //jdbc对象的URL
try{
Class.forName(JDriver); //加载jdbc-odbc桥驱动程序
}catch(final java.lang.ClassNotFoundException e1) //处理意外
{
t_message.setText(e1.getMessage());
}
try{
final Connection con=DriverManager.getConnection(conURL); //设置数据库联接url
final Statement s=con.createStatement(); //建立statement对象
final String query="select password from Users where username='"+t_username.getText()+"'"; //设置sql语句查询字段为t_username.getText()值的元组
ResultSet rs = s.executeQuery(query); //执行sql语句并将结果存入rs结果集
rs.next(); //设置结果集游标
passw=rs.getString("password"); //取password字段值
s.close(); //释放数据库及所连jdbc资源
con.close(); //关闭连接
}catch(final SQLException e2){ }
if(passw.isEmpty())//如果所查询用户的密码为空则弹出消息框要求重新输入或注册
{
int n=JOptionPane.showConfirmDialog(this,"你的用户名输入错误或您还没有注册。\n要注册吗?","错误!",JOptionPane.YES_NO_OPTION);
if (n==JOptionPane.YES_OPTION)
{
r.setVisible(true);
setVisible(false);
}
else
{
t_username.setText("");
t_password.setText("");
t_username.requestFocus();
}
}
else if(passw.equals(t_password.getText())) //成功登陆
JOptionPane.showMessageDialog(this,"您已通过口令验证,登陆系统成功!","登陆成功!",JOptionPane.PLAIN_MESSAGE);
else //密码错误
{
JOptionPane.showMessageDialog(this,"密码错误!请重新登陆。","错误!",JOptionPane.WARNING_MESSAGE);
t_username.setText("");
t_password.setText("");
t_username.requestFocus();
}
}
if(e.getSource()==b_register)
//如果事件源是注册按钮则进入注册窗口并隐藏登陆窗口
{
r.setVisible(true);
setVisible(false);
}
if(e.getSource()==b_exit)
System.exit(0); //退出
}
}
class Register extends Frame implements ActionListener
{
//域中声明界面上所使用的组件及布局
JLabel l_title;
JLabel l_name;
JLabel l_pass;
Insets insert;
Button b_submit;
Button b_exit;
TextField t_username;
TextField t_password;
GridBagConstraints c;
Font f;
public Register(String s)//重写构造方法
{
super(s);
//实现组建
t_username=new TextField("请输入您的用户名!",20);
t_password=new TextField("请输入您的用密码!",20);
t_password.setEchoChar('#');
b_submit=new Button("提交");
b_exit=new Button("退出");
b_submit.addActionListener(this);
b_exit.addActionListener(this);
l_name=new JLabel("用户名:");
l_pass=new JLabel("密 码:");
l_title=new JLabel("==用户注册==");
f=new Font("华文行楷",Font.PLAIN,18);
l_title.setFont(f);
l_title.setForeground(Color.red);
//布局同上
insert=new Insets(3,3,3,3);
GridBagLayout gbl=new GridBagLayout();
setLayout(gbl);
c=new GridBagConstraints(1,0,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_title,c);
add(l_title);
c=new GridBagConstraints(0,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_name,c);
add(l_name);
c=new GridBagConstraints(0,2,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,0,0);
gbl.setConstraints(l_pass,c);
add(l_pass);
c=new GridBagConstraints(1,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(t_username,c);
add(t_username);
c=new GridBagConstraints(1,GridBagConstraints.RELATIVE,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(t_password,c);
add(t_password);
c=new GridBagConstraints(2,1,1,1,1,1,GridBagConstraints.NORTHWEST,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(b_submit,c);
add(b_submit);
insert=new Insets(3,3,28,3);
c=new GridBagConstraints(2,GridBagConstraints.RELATIVE,1,1,1,1,GridBagConstraints.CENTER,
GridBagConstraints.NONE,insert,1,1);
gbl.setConstraints(b_exit,c);
add(b_exit);
//添加鼠标和窗体适配器
t_username.addMouseListener(
new MouseAdapter(){
public void mouseClicked(MouseEvent e){
t_username.selectAll();
}
}
);
t_password.addMouseListener(
new MouseAdapter(){
public void mouseClicked(MouseEvent e){
t_password.selectAll();
}
});
addWindowListener(
new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
);
//设置窗体,同上
setVisible(false);
setBounds(60,60,300,300);
pack();
setResizable(false);
}
public void actionPerformed(final ActionEvent e)
{
if(e.getSource()==b_submit)//如果事件源是注册按钮
{
final String JDriver="sun.jdbc.odbc.JdbcOdbcDriver"; //声明jdbc驱动程序类型
final String conURL="jdbc:odbc:UserDB"; //jdbc对象的URL
try{
Class.forName(JDriver);//加载jdbc-odbc桥驱动程序
}catch(final java.lang.ClassNotFoundException e1){ }
try{
final Connection con=DriverManager.getConnection(conURL);//设置数据库联接url
final Statement s=con.createStatement();//建立statement对象
final String query="INSERT INTO Users (username,password) VALUES ('"+t_username.getText()+"','"+t_password.getText()+"')";//设置sql语句插入相应元组
s.executeUpdate(query);//执行sql语句
s.close(); //释放数据库及所连jdbc资源
con.close(); //关闭连接
}catch(final SQLException e2){ }
setVisible(false);
new Login("用户登录:");
}
if(e.getSource()==b_exit)
System.exit(0); //退出
}
}
class TextWindowExe //定义程序入口类
{
public static void main (String [] args)
{
new Login("用户登录:"); //实现窗体
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -