package connect;
import java.awt.BorderLayout;
import java.awt.Checkbox;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.plaf.synth.Region;
import javax.swing.table.DefaultTableModel;
public class GUI extends JFrame implements ActionListener{
private JButton addButton, updateButton, deleteButton, resetButton,
findButton;
private JTextField textField_MaSV, textField_Name, textField_Age,
textField_Class, textField_Email;
private JLabel idLabel, nameLabel, genderLabel, ageLabel, classLabel,
emailLabel;
private JPanel panel_1, panel_2, panel_3;
private JPanel panel_4, panel_5;
private JTable table;
private DefaultTableModel defaultTableModel;
private JFrame jFrame;
private JCheckBox checkBox_1;
private JCheckBox checkBox_2;
private ButtonGroup checkButtonGroup;
private Border border, border2;
private final int WIDTH = 800;
private final int HEIGHT = 800;
//
private ArrayList<SinhVien> danhsachsinhvien = new ArrayList<>();
public GUI(){
jFrame = new JFrame();
jFrame.setLayout(new GridLayout(2,1));
panel_1 = new JPanel();
panel_2 = new JPanel();
panel_3 = new JPanel();
panel_4 = new JPanel();
panel_5 = new JPanel();
border = BorderFactory.createTitledBorder("Nhập Thông Tin Sinh Viên");
border2 = BorderFactory.createTitledBorder("Danh Sách Sinh Viên");
defaultTableModel = new DefaultTableModel();
//setMainFrame
setFrame();
//Setuppanel1
jFrame.add(panel_1);
jFrame.add(panel_2);
//set
setButtons();
setLable();
setTextField();
setCheckBox();
setTable();
showSinhVien();
//add
addElementsToPanel1();
addElementsToPanel2();
//setpanel
setPanel3();
setPanel4();
setPanel5();
panel_1.setBorder(border);
panel_1.setLayout(new GridLayout(7,1));
panel_2.setBorder(border2);
//panel_2.setLayout(new BorderLayout());
defaultTableModel = (DefaultTableModel) table.getModel();
showSinhVien();
}
public void setFrame() {
jFrame.setSize(WIDTH, HEIGHT);
jFrame.setTitle("Chương Trình Quản Lý Sinh Viên");
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void setButtons() {
addButton = new JButton("Thêm");
addButton.addActionListener(this);
updateButton = new JButton("Cập Nhật");
updateButton.addActionListener(this);
deleteButton = new JButton("Xoá");
deleteButton.addActionListener(this);
resetButton = new JButton("Reset");
resetButton.addActionListener(this);
findButton = new JButton("Tìm");
findButton.addActionListener(this);
}
private void setLable() {
idLabel = new JLabel("Mã Sinh Viên");
nameLabel = new JLabel("Họ Tên");
ageLabel = new JLabel("Tuổi");
genderLabel = new JLabel("Giới Tính");
classLabel = new JLabel("Lớp");
emailLabel = new JLabel("Email");
}
private void setTextField() {
textField_MaSV = new JTextField();
textField_Name = new JTextField();
textField_Class = new JTextField();
textField_Age = new JTextField();
textField_Email = new JTextField();
}
private void setCheckBox() {
checkButtonGroup = new ButtonGroup();
checkBox_1 = new JCheckBox("Nam");
checkBox_2 = new JCheckBox("Nữ");
//Check checkbox chi duoc chon 1 item
checkButtonGroup.add(checkBox_1);
checkButtonGroup.add(checkBox_2);
}
private void addElementsToPanel1() {
panel_1.add(idLabel);
panel_1.add(textField_MaSV);
panel_1.add(nameLabel);
panel_1.add(textField_Name);
panel_1.add(ageLabel);
panel_1.add(textField_Age);
panel_1.add(genderLabel);
panel_1.add(panel_3);
panel_1.add(classLabel);
panel_1.add(textField_Class);
panel_1.add(emailLabel);
panel_1.add(textField_Email);
panel_1.add(panel_4);
panel_1.add(panel_5);
}
private void addElementsToPanel2() {
panel_2.add(table.getTableHeader(), BorderLayout.NORTH);
panel_2.add(table, BorderLayout.CENTER);
}
private void setPanel3() {
panel_3.add(checkBox_1);
panel_3.add(checkBox_2);
panel_3.setLayout(new GridLayout(1,2));
}
private void setPanel4() {
panel_4.add(addButton);
panel_4.add(updateButton);
panel_4.setLayout(new GridLayout(1, 2));
}
private void setPanel5() {
panel_5.add(deleteButton);
panel_5.add(resetButton);
panel_5.add(findButton);
panel_5.setLayout(new GridLayout(1,3));
}
private void setTable() {
table = new JTable(defaultTableModel);
defaultTableModel.addColumn("ID");
defaultTableModel.addColumn("Mã Sinh Viên");
defaultTableModel.addColumn("Tên Sinh Viên");
defaultTableModel.addColumn("Lớp");
defaultTableModel.addColumn("Tuổi");
defaultTableModel.addColumn("Giới Tính");
defaultTableModel.addColumn("Email");
private void showSinhVien() {
danhsachsinhvien = SQLStaments.getInstance().selectAll();
defaultTableModel.setRowCount(0);
for(SinhVien sinhVien : danhsachsinhvien) {
defaultTableModel.addRow(new Object[]
{defaultTableModel.getRowCount() + 1, sinhVien.getMaSV(), sinhVien.getName(),
sinhVien.getInClass(), sinhVien.getAge(), sinhVien.getSex(), sinhVien.getEmail()});
}
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == resetButton) {
ResetButton();
}
if(e.getSource() == addButton) {
AddButton();
}
if(e.getSource() == deleteButton) {
DeleteSinhVienButton();
}
if(e.getSource() == findButton) {
showSinhVien();
FindSinhVienButton();
}
if(e.getSource() == updateButton) {
UpdateSinhVien();
}
}
private void ResetButton() {
textField_MaSV.setText("");
textField_Name.setText("");
textField_Age.setText("");
textField_Class.setText("");
textField_Email.setText("");
checkBox_1.setSelected(false);
checkBox_2.setSelected(false);
}
private void AddButton() {
//Lay du lieu
String maSV = textField_MaSV.getText();
String name = textField_Name.getText();
int age = Integer.parseInt(textField_Age.getText());
String sex = stringFromCheckBox();
String inClass = textField_Class.getText();
String email = textField_Email.getText();
SinhVien sinhVien = new SinhVien(maSV, name, inClass, age, sex, email);
//Add vo database
SQLStaments.getInstance().add(sinhVien);
showSinhVien();
ResetButton();
}
private void DeleteSinhVienButton() {
int selectPosition = table.getSelectedRow();
if(selectPosition > 0) {
SinhVien sinhVien = danhsachsinhvien.get(selectPosition);
int check = JOptionPane.showConfirmDialog(this, "Bạn có chắc muốn
xoá Sinh Viên này?");
if(check == 0) {
SQLStaments.getInstance().delete(sinhVien.getMaSV());
showSinhVien();
}
}
}
private void FindSinhVienButton() {
String inputStr = JOptionPane.showInputDialog(this, "Nhập mã Sinh Viên
bạn muốn tìm: ");
if((inputStr.length() > 0) && (inputStr != null)) {
danhsachsinhvien =
SQLStaments.getInstance().findWithCondition(inputStr);
//Hien thi
defaultTableModel.setRowCount(0);
for(SinhVien sinhVien : danhsachsinhvien) {
defaultTableModel.addRow(new Object[]
{defaultTableModel.getRowCount() + 1, sinhVien.getMaSV(), sinhVien.getName(),
sinhVien.getInClass(), sinhVien.getAge(), sinhVien.getSex(), sinhVien.getEmail()});
}
} else {
showSinhVien();
}
}
private void UpdateSinhVien() {
String maSV = textField_MaSV.getText();
String name = textField_Name.getText();
int age = Integer.parseInt(textField_Age.getText());
String sex = stringFromCheckBox();
String inClass = textField_Class.getText();
String email = textField_Email.getText();
SinhVien sinhVien = new SinhVien(maSV, name, inClass, age, sex, email);
SQLStaments.getInstance().update(sinhVien);
showSinhVien();
ResetButton();
}
private String stringFromCheckBox() {
String str = "";
if(checkBox_1.isSelected()) {
str = checkBox_1.getText();
}
if(checkBox_2.isSelected()) {
str = checkBox_2.getText();
}
return str;
}
// private String checkTextField(JTextField textField) {
//
// }
public static void main(String[] args) {
new GUI();
}
}