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 5 nhằm hướng dẫn xây dựng tính năng quản lý thông tin học viên.
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.
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.
Sau khi đã cài đặt đầy đủ các công cụ lập trình, hệ quản trị cơ sở dữ liệu… thì tiếp theo chúng ta sẽ khởi tạo dự án ứng dụng quản lý học viên trên Netbeans IDE với ngôn ngữ lập trình Java Swing.
Bước 1: Thiết kế giao diện màn hình quản lý học viên
Bây giờ để bạn mở màn hình HocVienPanel.java lên để thực hiện thiết kế giao diện cho màn hình quản lý học viên.
Màn hình quản lý học viên sẽ gồm một Button để thêm mới dữ liệu, một Panel để hiển thị dữ liệu từ trong danh sách cơ sở dữ liệu lên Table, và một TextField để nhập dữ liệu giúp xử lý tìm kiếm nhanh.
Bước 2: Tạo lớp kết nối cơ sở dữ liệu, viết phương thức truy vấn dữ liệu.
Lớp DBConnect.java giúp kết nối cơ sở dữ liệu.
package com.teamvietdev.qlhv.dao; import java.sql.Connection; import java.sql.DriverManager; public class DBConnect { public static Connection getConnection() { Connection cons = null; try { Class.forName("com.mysql.jdbc.Driver"); cons = DriverManager.getConnection( "jdbc:mysql://localhost:3306/db_qlhv", "root", ""); } catch (Exception e) { e.printStackTrace(); } return cons; } public static void main(String[] args) { System.out.println(getConnection()); } }
Tạo lớp thực hiện truy vấn dữ liệu từ cơ sở dữ liệu:
Lớp HocVienDAO.java
package com.teamvietdev.qlhv.dao; import com.teamvietdev.qlhv.model.HocVien; import java.util.List; public interface HocVienDAO { public List<HocVien> getList(); }
Lớp HocVienDAOImpl.java
package com.teamvietdev.qlhv.dao; import com.teamvietdev.qlhv.model.HocVien; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; public class HocVienDAOImpl implements HocVienDAO { @Override public List<HocVien> getList() { Connection cons = DBConnect.getConnection(); String sql = "SELECT * FROM hoc_vien"; List<HocVien> list = new ArrayList<>(); try { PreparedStatement ps = (PreparedStatement) cons.prepareStatement(sql); ResultSet rs = ps.executeQuery(); while (rs.next()) { HocVien hocVien = new HocVien(); hocVien.setMa_hoc_vien(rs.getInt("ma_hoc_vien")); hocVien.setHo_ten(rs.getString("ho_ten")); hocVien.setSo_dien_thoai(rs.getString("so_dien_thoai")); hocVien.setDia_chi(rs.getString("dia_chi")); hocVien.setNgay_sinh(rs.getDate("ngay_sinh")); hocVien.setGioi_tinh(rs.getBoolean("gioi_tinh")); hocVien.setTinh_trang(rs.getBoolean("tinh_trang")); list.add(hocVien); } ps.close(); cons.close(); } catch (Exception e) { e.printStackTrace(); } return list; } }
Lớp HocVienService.java
package com.teamvietdev.qlhv.service; import com.teamvietdev.qlhv.model.HocVien; import java.util.List; public interface HocVienService { public List<HocVien> getList(); }
Lớp HocVienServiceImpl.java
package com.teamvietdev.qlhv.service; import com.teamvietdev.qlhv.dao.HocVienDAO; import com.teamvietdev.qlhv.dao.HocVienDAOImpl; import com.teamvietdev.qlhv.model.HocVien; import java.util.List; public class HocVienServiceImpl implements HocVienService { private HocVienDAO hocVienDAO = null; public HocVienServiceImpl() { this.hocVienDAO = new HocVienDAOImpl(); } @Override public List<HocVien> getList() { return hocVienDAO.getList(); } }
Bước 3: Bạn tạo lớp ClassTableModel.java trong gói utility để trình bày cách dữ liệu hiển thị
package com.teamvietdev.qlhv.utility; import com.teamvietdev.qlhv.model.HocVien; import java.util.List; import javax.swing.table.DefaultTableModel; public class ClassTableModel { public DefaultTableModel setTableHocVien(List<HocVien> listItem, String[] listColumn) { int columns = listColumn.length; DefaultTableModel dtm = new DefaultTableModel() { @Override public boolean isCellEditable(int rowIndex, int colIndex) { return false; } @Override public Class<?> getColumnClass(int columnIndex) { return columnIndex == 7 ? Boolean.class : String.class; } }; dtm.setColumnIdentifiers(listColumn); Object[] obj; int num = listItem.size(); HocVien hocVien = null; for (int i = 0; i < num; i++) { hocVien = listItem.get(i); obj = new Object[columns]; obj[0] = hocVien.getMa_hoc_vien(); obj[1] = (i + 1); obj[2] = hocVien.getHo_ten(); obj[3] = hocVien.getNgay_sinh(); obj[4] = hocVien.isGioi_tinh() == true ? "Nam" : "Nữ"; obj[5] = hocVien.getSo_dien_thoai(); obj[6] = hocVien.getDia_chi(); obj[7] = hocVien.isTinh_trang(); dtm.addRow(obj); } return dtm; } }
Tạo lớp QuanLyHocVienController.java trong gói controller
package com.teamvietdev.qlhv.controller; import com.teamvietdev.qlhv.model.HocVien; import com.teamvietdev.qlhv.service.HocVienService; import com.teamvietdev.qlhv.service.HocVienServiceImpl; import com.teamvietdev.qlhv.utility.ClassTableModel; import java.awt.CardLayout; import java.awt.Dimension; import java.awt.Font; import java.util.List; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.RowFilter; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; import javax.swing.table.TableRowSorter; /** * * @author TVD */ public class QuanLyHocVienController { private JPanel jpnView; private JButton btnAdd; private JTextField jtfSearch; private ClassTableModel classTableModel = null; private final String[] COLUMNS = {"Mã học viên", "STT", "Tên học viên", "Ngày sinh", "Giới tính", "Số điện thoại", "Địa chỉ", "Trạng thái"}; private HocVienService hocVienService = null; private TableRowSorter<TableModel> rowSorter = null; public QuanLyHocVienController(JPanel jpnView, JButton btnAdd, JTextField jtfSearch) { this.jpnView = jpnView; this.btnAdd = btnAdd; this.jtfSearch = jtfSearch; this.classTableModel = new ClassTableModel(); this.hocVienService = new HocVienServiceImpl(); } public void setDataToTable() { List<HocVien> listItem = hocVienService.getList(); DefaultTableModel model = classTableModel.setTableHocVien(listItem, COLUMNS); JTable table = new JTable(model); rowSorter = new TableRowSorter<>(table.getModel()); table.setRowSorter(rowSorter); jtfSearch.getDocument().addDocumentListener(new DocumentListener() { @Override public void insertUpdate(DocumentEvent e) { String text = jtfSearch.getText(); if (text.trim().length() == 0) { rowSorter.setRowFilter(null); } else { rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } } @Override public void removeUpdate(DocumentEvent e) { String text = jtfSearch.getText(); if (text.trim().length() == 0) { rowSorter.setRowFilter(null); } else { rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text)); } } @Override public void changedUpdate(DocumentEvent e) { } }); // design table.getTableHeader().setFont(new Font("Arial", Font.BOLD, 14)); table.getTableHeader().setPreferredSize(new Dimension(100, 50)); table.setRowHeight(50); table.validate(); table.repaint(); JScrollPane scroll = new JScrollPane(); scroll.getViewport().add(table); scroll.setPreferredSize(new Dimension(1350, 400)); jpnView.removeAll(); jpnView.setLayout(new CardLayout()); jpnView.add(scroll); jpnView.validate(); jpnView.repaint(); } }
Để tùy chỉnh độ rộng các cột bạn có thể thiết lập bởi thuộc tính setMaxWidth(), setMinWidth()
table.getColumnModel().getColumn(1).setMaxWidth(80); table.getColumnModel().getColumn(1).setMinWidth(80); table.getColumnModel().getColumn(1).setPreferredWidth(80);
Lớp HocVienJPanel.java gọi đến controller xử lý:
package com.teamvietdev.qlhv.view; import com.teamvietdev.qlhv.controller.QuanLyHocVienController; /** * * @author TVD */ public class HocVienJPanel extends javax.swing.JPanel { public HocVienJPanel() { initComponents(); QuanLyHocVienController controller = new QuanLyHocVienController( jpnView, btnAdd, jtfSearch); controller.setDataToTable(); } }
Kết quả sau khi thực hiện có thể như sau:
Cấu trúc thư mục toàn bộ ứng dụng thiết kế như sau:
Như vậy thông qua những phần hướng dẫn trên mong rằng bạn có thể tìm hiểu dễ dàng và nhanh chóng hơn về lập trình Java Swing, có thể xây dựng một dự án hoàn chỉnh để hoàn thành báo cáo môn học hoặc luận văn tốt nghiệp.
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 5 tại đây: http: //123link. vip/teamvietdevQLHV05
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)
cons = DriverManager.getConnection(“jdbc:mysql://NguyenLeHoaThuan:3306/QLHocVien”, “root”, “root”);
ở phút 6:10. Nếu mình kết nối với SQL server thì nó là cái gì ạ.