java学习笔记(二):swing编程--利用绝对布局设计一个简单的登陆界面

学校实习要求我们设计一个信息系统软件,不得已,只好借鉴别人的源码,现学现做了,这是其中一个登陆窗口的实现。
下附源码:

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;

   }

}

这是效果图:
java学习笔记(二):swing编程--利用绝对布局设计一个简单的登陆界面_第1张图片
效果图.JPG

你可能感兴趣的:(java学习笔记(二):swing编程--利用绝对布局设计一个简单的登陆界面)