Lập trình Java Swing với ứng dụng quản lý học viên phần 8

Phần hướng dẫn lập trình Java Swing với ứng dụng quản lý học viên do đội ngũ Team Việt Dev biên soạn. Nội dung phần 8 nhằm hướng dẫn xây dựng tính năng tài khoản đăng nhập ứng dụng.

Java Swing là một phần của JFC (Java Foundation Classes) được sử dụng để tạo các ứng dụng Window-Based. Java Swing được xây dựng ở trên cùng của AWT (Abstract Windowing Toolkit) và được viết bằng ngôn ngữ lập trình Java.

Lập trình Java Swing với ứng dụng quản lý học viên

Nhằm giúp các bạn sinh viên, học viên hay một số bạn đang có nhu cầu tìm hiểu về lập trình Java Swing thì đội ngũ Team Việt Dev biên soạn một số tài liệu Java Swing và phần hướng dẫn lập trình Java Swing với ứng dụng quản lý học viên.

Bước 1: Đầu tiên chúng ta tạo lớp TaiKhoan.java chứa thông tin đăng nhập như tên đăng nhập, mật khẩu.

package com.teamvietdev.model;

public class TaiKhoan {

    private int ma_tai_khoan;
    private String ten_dang_nhap;
    private String mat_khau;
    private boolean tinh_trang;

    public int getMa_tai_khoan() {
        return ma_tai_khoan;
    }

    public void setMa_tai_khoan(int ma_tai_khoan) {
        this.ma_tai_khoan = ma_tai_khoan;
    }

    public String getTen_dang_nhap() {
        return ten_dang_nhap;
    }

    public void setTen_dang_nhap(String ten_dang_nhap) {
        this.ten_dang_nhap = ten_dang_nhap;
    }

    public String getMat_khau() {
        return mat_khau;
    }

    public void setMat_khau(String mat_khau) {
        this.mat_khau = mat_khau;
    }

    public boolean isTinh_trang() {
        return tinh_trang;
    }

    public void setTinh_trang(boolean tinh_trang) {
        this.tinh_trang = tinh_trang;
    }

}

Tạo bảng tai_khoan trong cơ sở dữ liệu:

-- ----------------------------
-- Table structure for tai_khoan
-- ----------------------------
DROP TABLE IF EXISTS `tai_khoan`;
CREATE TABLE `tai_khoan` (
  `ma_tai_khoan` int(11) NOT NULL AUTO_INCREMENT,
  `ten_dang_nhap` varchar(255) DEFAULT NULL,
  `mat_khau` varchar(255) DEFAULT NULL,
  `tinh_trang` bit(1) DEFAULT NULL,
  PRIMARY KEY (`ma_tai_khoan`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

Bước 2: Tạo lớp xử lý kiểm tra tài khoản đăng nhập trong cơ sở dữ liệu

Lớp TaiKhoanDAO.java

package com.teamvietdev.dao;

import com.teamvietdev.model.TaiKhoan;

public interface TaiKhoanDAO {
    
    public TaiKhoan login(String tenDangNhap, String matKhau);
    
}

Lớp TaiKhoanDAOImpl.java

package com.teamvietdev.dao;

import com.teamvietdev.model.TaiKhoan;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TaiKhoanDAOImpl implements TaiKhoanDAO {

    @Override
    public TaiKhoan login(String tenDangNhap, String matKhau) {
        Connection cons = DBConnect.getConnection();
        String sql = "SELECT * FROM tai_khoan WHERE ten_dang_nhap LIKE ? AND mat_khau LIKE ?";
        TaiKhoan taiKhoan = null;
        try {
            PreparedStatement ps = (PreparedStatement) cons.prepareStatement(sql);
            ps.setString(1, tenDangNhap);
            ps.setString(2, matKhau);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                taiKhoan = new TaiKhoan();
                taiKhoan.setMa_tai_khoan(rs.getInt("ma_tai_khoan"));
                taiKhoan.setTen_dang_nhap(rs.getString("ten_dang_nhap"));
                taiKhoan.setMat_khau(rs.getString("mat_khau"));
                taiKhoan.setTinh_trang(rs.getBoolean("tinh_trang"));
            }
            ps.close();
            cons.close();
            return taiKhoan;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

Lớp TaiKhoanService.java

package com.teamvietdev.service;

import com.teamvietdev.model.TaiKhoan;

public interface TaiKhoanService {
    
    public TaiKhoan login(String tenDangNhap, String matKhau);
    
}

Lớp TaiKhoanServiceImpl.java

package com.teamvietdev.service;

import com.teamvietdev.dao.TaiKhoanDAO;
import com.teamvietdev.dao.TaiKhoanDAOImpl;
import com.teamvietdev.model.TaiKhoan;

public class TaiKhoanServiceImpl implements TaiKhoanService {

    private TaiKhoanDAO taiKhoanDAO = null;

    public TaiKhoanServiceImpl() {
        taiKhoanDAO = new TaiKhoanDAOImpl();
    }

    @Override
    public TaiKhoan login(String tenDangNhap, String matKhau) {
        return taiKhoanDAO.login(tenDangNhap, matKhau);
    }

}

Bước 3: Bạn có thể khởi tạo Dialog mới và đặt tên là DangNhapDialog.java, sau đó thiết kế giao diện trang đăng nhập một 2 TextField để nhập tên đăng nhập và mật khẩu, một Button để người dùng đăng nhập và một Label giúp hiển thị thông báo trong trường hợp nhập sai tên đăng nhập hoặc mật khẩu.

Lập trình Java Swing với ứng dụng quản lý học viên

Kết quả sau khi thiết kế mẫu giao diện đăng nhập như sau:

Lập trình Java Swing với ứng dụng quản lý học viên

Tạo DangNhapController.java xử lý đăng nhập

package com.teamvietdev.controller;

import com.teamvietdev.model.TaiKhoan;
import com.teamvietdev.service.TaiKhoanService;
import com.teamvietdev.service.TaiKhoanServiceImpl;
import com.teamvietdev.view.ManHinhChinhJFrame;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class DangNhapController {

    private Dialog dialog;
    private JButton btnSubmit;
    private JTextField jtfTenDangNhap;
    private JTextField jtfMatKhau;
    private JLabel jlbMsg;

    private TaiKhoanService taiKhoanService = null;

    public DangNhapController(Dialog dialog, JButton btnSubmit,
            JTextField jtfTenDangNhap, JTextField jtfMatKhau, JLabel jlbMsg) {
        this.dialog = dialog;
        this.btnSubmit = btnSubmit;
        this.jtfTenDangNhap = jtfTenDangNhap;
        this.jtfMatKhau = jtfMatKhau;
        this.jlbMsg = jlbMsg;

        taiKhoanService = new TaiKhoanServiceImpl();
    }

    public void setEvent() {
        btnSubmit.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                try {
                    if (jtfTenDangNhap.getText().length() == 0
                            || jtfMatKhau.getText().length() == 0) {
                        jlbMsg.setText("Vui lòng nhập dữ liệu bắt buộc!");
                    } else {
                        TaiKhoan taiKhoan = taiKhoanService.login(jtfTenDangNhap.getText(), jtfMatKhau.getText());
                        if (taiKhoan == null) {
                            jlbMsg.setText("Tên đăng nhập và mật khẩu không đúng!");
                        } else {
                            if (!taiKhoan.isTinh_trang()) {
                                jlbMsg.setText("Tài khoản của bạn đang bị tạm khóa!");
                            } else {
                                dialog.dispose();
                                MainJFrame frame = new MainJFrame();
                                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                                frame.setVisible(true);
                            }
                        }
                    }
                } catch (Exception ex) {
                    jlbMsg.setText(ex.toString());
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                btnSubmit.setBackground(new Color(0, 200, 83));
            }

            @Override
            public void mouseExited(MouseEvent e) {
                btnSubmit.setBackground(new Color(100, 221, 23));
            }
        });

    }

}

Trong DangNhapDialog.java bạn gọi đến DangNhapController.java

DangNhapController controller = new DangNhapController(this, btnSubmit, 
                jtfTenDangNhap, jtfMatKhau, jlbMsg);
controller.setEvent();

Xem hướng dẫn thực hiện chi tiết tại đây:

Tải mã nguồn hướng dẫn lập trình Java Swing với ứng dụng quản lý học viên phần 8 tại đây:

Lời kết: Trong thời gian tới Team Việt Dev sẽ tiếp tục ra mắt nhiều nội dung khác liên quan đến Java Swing miễn phí đến bạn đọc, các bạn nhớ theo dõi kênh để có được những chia sẻ mới nhất.

(Tác giả: Team Việt Dev)

Bình luận