学校实习要求我们设计一个信息系统软件,不得已,只好借鉴别人的源码,现学现做了,这是其中一个登陆窗口的实现。
下附源码:
package com.main;
import java.awt.*;//导入AWT
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;//导入swing包
import com.commonclass.CreatecdIcon;
import com.commonclass.Dbcon;
import com.commonclass.QuitAction;
//定义一个类继承JFrame类
public class MyJFrame extends JFrame {
private static final long serialVersionUID = 1L;
//定义一个CreateJFrame()方法
public void CreateJFrame(String title){//实例化一个JFrame对象
JFrame jfr=new JFrame(title);
//取消该窗体的布局管理器设置
jfr.setLayout(null);
//设置该窗体不能由用户调整大小
jfr.setResizable(false);
jfr.setBounds(0, 0, 500, 309);
//获取一个容器
Container container=jfr.getContentPane();
//设置窗体关闭方式
jfr.setDefaultCloseOperation(EXIT_ON_CLOSE);
//创建放置用户名文字的标签
final JLabel label=new JLabel();
label.setText("用 户 名:");
label.setHorizontalAlignment(SwingConstants.CENTER);
label.setBounds(50,100,100, 30);
container.add(label);
//创建放置用户名文本框
final JTextField username=new JTextField(20);
username.setBounds(170,100,200, 30);
container.add(username);
//创建放置密码的标签
final JLabel label1=new JLabel();
label1.setHorizontalAlignment(SwingConstants.CENTER);
container.add(label1);
label1.setBounds(50, 130, 100, 30);
label1.setText("密 码:");
//创建放置密码的文本框
final JPasswordField password=new JPasswordField(20);
password.setEchoChar('*');//注意!java中单引号表示字符,双引号表示字符串,这和python不同!
container.add(password);
password.setBounds(170, 130, 200, 30);
//添加登录按钮
final JButton login=new JButton();
//为按钮添加监听事件
login.addActionListener(new ActionListener()
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
try{//获取用户名
String userStr=username.getText();
//获取密码
String pwdStr=new String(password.getPassword());
//验证用户登陆信息
if(!Dbcon.checkLogin(userStr, pwdStr)){
JOptionPane.showMessageDialog(MyJFrame.this,"用户名与密码无法登陆","登陆失败",JOptionPane.ERROR_MESSAGE);
return;
}
}catch(Exception e1){e1.printStackTrace();}
//显示主窗体
jfr.setVisible(false);
}
});
login.setText("登陆");
container.add(login);
login.setBounds(160, 170, 60, 40);
//添加退出按钮
final JButton quit=new JButton();
//为退出按钮添加监听事件
quit.addActionListener(new QuitAction());
quit.setText("退出");
container.add(quit);
quit.setBounds(210,170, 60, 40);
final JLabel tupianLabel = new JLabel();
//在北部面板中添加图片
tupianLabel.setIcon(CreatecdIcon.add("25.JPG"));
container.add(tupianLabel);
tupianLabel.setBounds(100, 0, 400, 100);
//改变窗体的背景颜色
container.setBackground(new Color(202,235,216));
//使窗体可视
jfr.setVisible(true);
}
//这是一段测试代码public static void main(String[] args){new MyJFrame().CreateJFrame("这是一个测试窗口");}
}
package com.commonclass;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
//退出按钮监听事件类
public class QuitAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
System.exit(0);
}
}
package com.commonclass;
//创建数据库连接类
import java.sql.Connection; //导入进行数据库连接时所使用的 java.sql.Connection 类
import java.sql.DriverManager;//导入进行数据库连接时所使用的 java.sql.DriverManager 类
import java.sql.SQLException; //导入进行数据库操作时捕捉异常使用的 java.sql.SQLException 类
import java.sql.Statement;
import java.sql.ResultSet;//导入执行sql语句使用的java.sql.PreparedStatement类
/*创建数据库连接的公共类*/
public class Dbcon {/*定义类属性*/
public static final String url = "jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT";//URL指向要访问的数据库名db
public static final String name = "com.mysql.cj.jdbc.Driver";//驱动程序名
public static final String user = "root";//mysql用户名
public static final String password = "password";//mysql密码
public static Connection conn = null;//声明数据库的连接对象
static{
try {if(conn==null)
{
Class.forName(name);//指定连接类型
conn = DriverManager.getConnection(url,user,password);//获取连接
}
} catch (Exception e) {
e.printStackTrace();
}
}
//关闭数据库连接
public void close() { try {
Dbcon.conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
//创建用于登陆检查的方法
public static boolean checkLogin(String userStr,String pwdStr)
throws SQLException{ResultSet rs=findForResultSet("select * from yewu where name='"+userStr+"'and pwd='"+pwdStr+"'");if(rs==null) return false;return rs.next();}
private static ResultSet findForResultSet(String sql) {
// TODO 自动生成的方法存根
try {
Statement stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(sql);
return rs;
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return null;
}
}
package com.commonclass;
//创建图片标签类
import javax.swing.*;
public class CreatecdIcon {public static ImageIcon add(String ImageName){
String imgURL="picture\\"+new String(ImageName);
ImageIcon imgic=new ImageIcon(imgURL);
return imgic;
}
}
这是效果图: