📄 login.java
字号:
package cn.com.studentsystem.login;
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import cn.com.util.DBConnection;
public class Login {
JTextField jpf1;//创建用户名文本框
JPasswordField jpf2;//创建密码的密码框
JCheckBox jcb1;//创建记住用户名的复选框
JCheckBox jcb2;//创建记住密码的复选框
JOptionPane jop = new JOptionPane();//消息提示框
JFrame jf;//主登陆框
String tem_user = null ;//存放暂时的用户名
String tem_password = null;//存放暂时的密码
FileInputStream f ;
FileOutputStream f1;
public Login(){
init();
}
/**
* 初始化Login类
*/
public void init(){
final Properties p = new Properties();//创建一个属性文件
try {
f = new FileInputStream("my.properties");//创建一个输入流对象来加载属性文件
p.load(f);//加载属性文件
f.close();//关闭输入流
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("You have some mistakes in the IO file!");
}
jf = new JFrame("用户登录");//建立主登录框
jf.setSize(350,360);//设置主登录框的大小
jf.setLocationRelativeTo(null);//设置主登录框输出在屏幕中央
Container con = jf.getContentPane();//得到主登录框的内容窗口
Color color = new Color(96,142,240);//创建一个颜色对象
con.setBackground(color);//设置主登录框的背景颜色
// con.setBackground(Color.black);
GridLayout grid1 = new GridLayout(3,1,15,15);//创建一个网格布局
GridLayout grid2 = new GridLayout(1,3,25,25);//创建另一个网格布局
FlowLayout flow = new FlowLayout(FlowLayout.CENTER,15,13);//创建一个流式布局
FirstJPanel jp1 = new FirstJPanel();//创建一个带背景图片的窗口
/**
* 创建多个空白窗口
*/
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
JPanel jp4 = new JPanel();
JPanel jp5 = new JPanel();
JPanel jp6 = new JPanel();
/**
* 设置各个窗口的背景颜色
*/
jp2.setBackground(color);
jp3.setBackground(color);
jp4.setBackground(color);
jp5.setBackground(color);
jp6.setBackground(color);
// jp2.setBackground(Color.black);
// jp3.setBackground(Color.black);
// jp4.setBackground(Color.black);
// jp5.setBackground(Color.black);
// jp6.setBackground(Color.black);
/**
* 设置各个窗口的布局格式
*/
jp2.setLayout(grid1);
jp3.setLayout(grid1);
jp4.setLayout(grid1);
jp5.setLayout(grid2);
jp6.setLayout(flow);
jf.setLayout(grid1);
/**
* 设置密码和用户名的标签
*/
JLabel jl1 = new JLabel("用户名",JLabel.CENTER);
JLabel jl2 = new JLabel("密 码",JLabel.CENTER);
/**
*建立两个文本框用于输入用户名和密码
*/
jpf1 = new JTextField(20);
jpf1.setText(p.getProperty("tem_user"));
jpf2 = new JPasswordField(20);
jpf2.setText(p.getProperty("tem_password"));
/**
* 创建框架图标
*/
ImageIcon i = new ImageIcon("image//title.png");
jf.setIconImage(i.getImage());
/**
* 创建按钮
*/
JButton jb1 = new JButton("用户注册");
JButton jb2 = new JButton("密码提示");
JButton jb5 = new JButton("网络连接");
/**
* 创建复选框
*/
jcb1 = new JCheckBox("记住用户");
jcb2 = new JCheckBox("记住密码");
/**
* 设置复选框的背景颜色
*/
jcb1.setBackground(color);
jcb2.setBackground(color);
// jcb1.setBackground(Color.black);
// jcb2.setBackground(Color.black);
JButton jb3 = new JButton("登陆");//创建登陆按钮
JButton jb4 = new JButton("取消");//创建取消按钮
JButton jb6 = new JButton("重置");//创建重置按钮
/**
* 创建登陆说明的标签
*/
JLabel jl4 = new JLabel("欢迎登陆中心软件教育网站 www.zxedu.com",JLabel.CENTER);
/**
* 使按钮的图标和边界间距为0
*/
jb1.setMargin(new Insets(0,0,0,0));
jb2.setMargin(new Insets(0,0,0,0));
jb3.setMargin(new Insets(0,0,0,0));
jb4.setMargin(new Insets(0,0,0,0));
jb5.setMargin(new Insets(0,0,0,0));
jb6.setMargin(new Insets(0,0,0,0));
jp2.add(jl1);//添加用户名标签到jp2面板
jp2.add(jl2);//添加密码标签到jp2面板
jp2.add(jcb1);//添加记住用户名复选框到jp2面板
jp3.add(jpf1);//添加存放用户名的文本框到jp3面板
jp3.add(jpf2);//添加存放密码的文本框到jp3面板
jp3.add(jcb2);//添加记住密码复选框到jp3面板
jp4.add(jb1);//添加用户注册按钮到jp4面板
jp4.add(jb2);//添加密码提示按钮到jp4面板
jp4.add(jb5);//添加网络连接按钮到jp4面板
/**
* 添加3个面板到面板jp5
*/
jp5.add(jp2);
jp5.add(jp3);
jp5.add(jp4);
jp6.add(jb3);//添加登陆按钮到面板jp6
jp6.add(jb4);//添加取消按钮到面板jp6
jp6.add(jb6);//添加重置按钮到面板jp6
jp6.add(jl4);//添加登陆说明标签到面板jp6
/**
* 添加各个面板到登陆框中
*/
jf.add(jp1);
jf.add(jp5);
jf.add(jp6);
/**
* 此类为登陆框的监听器内部类
* @author Administrator
*
*/
class LoginAction implements ActionListener{
/**
* 实现登陆框内部组件的监听功能
*/
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand().equals("用户注册")){
Regist r = new Regist();//创建一个注册窗口
}else if(arg0.getActionCommand().equals("密码提示")){
Connection con = DBConnection.getConnectionOracle();
String password_instruction = null;
try {
PreparedStatement ps = con.prepareStatement("select instruction from regist where username = ?");
ps.setString(1, jpf1.getText().toString());
ResultSet rs = ps.executeQuery();
while(rs.next()){
password_instruction = (String)rs.getObject(1);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
jop.showMessageDialog(null,password_instruction,"密码提示",JOptionPane.WARNING_MESSAGE);
}else if(arg0.getActionCommand().equals("网络连接")){
try {
Runtime.getRuntime().exec("cmd /c start www.baidu.com");//连接到百度首页
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();}
}else if(arg0.getActionCommand().equals("取消")){
System.exit(0);
}else if(arg0.getActionCommand().equals("重置")){
jpf1.setText(null);
jpf2.setText(null);
}else if(arg0.getActionCommand().equals("登陆")){
try {
f1 = new FileOutputStream("my.properties");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if(jcb1.isSelected()){
p.setProperty("tem_user", jpf1.getText().toString());
try {
p.store(f1, "tem_user");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}else {
p.setProperty("tem_user","");
try {
p.store(f1, "tem_user");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(jcb2.isSelected()){
p.setProperty("tem_password", jpf2.getText().toString());
try {
p.store(f1, "tem_password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else {
p.setProperty("tem_password", "");
try {
p.store(f1, "tem_password");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Connection con = DBConnection.getConnectionOracle();
PreparedStatement ps = null;
String user = null;
String pass = null;
try {
ps = con.prepareStatement("select username,password from regist where username = ?");
ps.setString(1, jpf1.getText().toString());
ResultSet rs = null;
rs = ps.executeQuery();
while(rs.next()){
user = rs.getString(1) ;
pass = rs.getString(2) ;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(jpf1.getText().toString().equals(user)&&jpf2.getText().toString().equals(pass)){
jop.showMessageDialog(null, "登陆成功","登录提示" , JOptionPane.INFORMATION_MESSAGE);
cn.com.frame.Test t = new cn.com.frame.Test();
jf.dispose();
}else{
jop.showMessageDialog(null, "登录失败,请输入正确的用户名和密码","登录提示" , JOptionPane.ERROR_MESSAGE);
}
}
}
}
LoginAction login_action = new LoginAction();//建立一个内部监听器类对象
/**
* 将用户注册按钮,密码提示按钮,网络连接按钮在监听器类中注册
*/
jb1.addActionListener(login_action);
jb2.addActionListener(login_action);
jb3.addActionListener(login_action);
jb4.addActionListener(login_action);
jb5.addActionListener(login_action);
jb6.addActionListener(login_action);
jcb1.addActionListener(login_action);
jcb2.addActionListener(login_action);
jpf1.addActionListener(login_action);
jpf2.addActionListener(login_action);
jf.setResizable(false);//设置登陆框的窗口大小为不可变
jf.setVisible(true);//设置登陆框为可见
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -