Hướng dẫn làm form đổi mật khẩu java

Chắc hẳn, các bạn cũng đã từng nghe và làm tới về ứng dụng Java rồi đúng không? Nếu ứng dụng bạn học chỉ là đơn thuần kiểu Console, mình khuyên bạn nên xem bài viết này.

Tại đây, mình sẽ giải thích cho các bạn thêm một số điều cần lưu ý cũng như Demo một Form Login trong Java nhé. Mình sẽ dùng JFrame Built-in của NetBeans)

1. JFrame (dạng kéo-thả) trong NetBeans và Java là gì?

Container là thành phần chủ chốt trong các thành phần của Swing GUI. Một Container cung cấp không gian để đặt một thành phần. Một Container trong AWT chính là một Component và nó có thêm khả năng để thêm các thành phần khác vào chính nó.

Khi xem xét về Container, bạn cần chú ý các điểm sau:

  • Các lớp con của Container được gọi là Container. Một số ví dụ về các lớp con của Container là JPanel, JFrame và JWindow.
  • Container chỉ có thể thêm Component vào chính nó.
  • Một layout mặc định có mặt trong mỗi container. Layout này có thể bị ghi đè bởi sử dụng phương thức setLayout().

Chương này chúng ta sẽ tìm hiểu về JFrame. Lớp JFrame là một phiên bản kế thừa từ java.awt.Frame mà bổ sung các hỗ trợ cho cấu trúc thành phần JFC/Swing.

Cú pháp khai báo cho lớp javax.swing.JFrame là:

public class JFrame
   extends Frame
      implements WindowConstants, Accessible, RootPaneContainer

Lớp này kế thừa các phương thức từ các lớp sau:

  • java.awt.Frame
  • java.awt.Window
  • java.awt.Container
  • java.awt.Component
  • java.lang.Object

Lớp JFrame này có các constructor sau:

1. JFrame(): Xây dựng một Frame mới, ban đầu là không nhìn thấy (invisible).

2. JFrame(GraphicsConfiguration gc): Tạo một Frame trong GraphicsConfiguration đã cho của một thiết bị màn hình và một title trống.

3. JFrame(String title): Tạo một Frame mới, ban đầu là không nhìn thấy (invisible) với title đã cho.

4. JFrame(String title, GraphicsConfiguration gc): Tạo một Frame với title đã cho và GraphicsConfiguration đã cho của một thiết bị màn hình.

Lưu ý: Nếu bạn muốn bắt đầu học và tìm hiểu về Java Swing, các bạn nên đọc các bài viết trên Internet hướng dẫn về cách bố trí GUI sao cho hợp lý, không nên bắt đầu từ việc kéo thả.

2. Tạo Form login cơ bản trong Java

Mình xin nhắc lại, ở đây mình dùng NetBeans 8.2 RC (các bạn cũng có thể dùng NetBeans 8.*)

Ok, giờ chúng ta tiến hành vào làm thôi nhé các bạn (mình sẽ Include đầy đủ các step ở dưới, các bạn đừng lo là không theo được nhé :D)

Bước 0: Mở NetBeans của bạn lên (việc này đơn giản, mình sẽ không nói nhiều)

Bước 1: Tạo một Project mới:

Các bạn bấm vào nút New Project trên IDE của mình

Sau đó sẽ có một cửa sổ hiện ra:

Hướng dẫn làm form đổi mật khẩu java

Các bạn sẽ bấm Next theo cấu hình này.

Ở bước tiếp theo, các bạn sẽ có một màn hình nhìn như thế này:

Hướng dẫn làm form đổi mật khẩu java

Các bạn nhớ bỏ tick ở phần Create Main Class đi nhé.

Vì nếu tích, IDE sẽ tự tạo ra hàm main cho ứng dụng, nhưng ở đây chúng ta muốn dùng JFrame form.

Sau khi xong, các bạn bấm Finish.

Bước 2: Tạo file JFrame cho ứng dụng.

Các bạn thực hiện như video này:

Sau đó các bạn có thể kéo thả các Element vào như sau:

Sau đó, các bạn có thể click chuột phải -> chọn Edit Text để xóa hết text trong các Element có sẵn (nếu cần)

Tạm kết

Vậy là các bạn cũng đã tạo được một giao diện cho App này của chúng ta. Trong phần tiếp theo của bài viết này, mình sẽ cùng các bạn đi sâu hơn về code nhé :3

Đề bài: Viết chương trình tạo một cửa sổ cho phép đăng ký thông tin người dùng gồm tên người dùng, mật khẩu và quyền hạn truy cập. Tạo một danh sách lưu trữ những người dùng đăng ký. Yêu cầu kiến thức:

  • Kế thừa và triển khai các phương thức đã được đề ra ở các lớp cha
  • Phân tích và thiết kế các đối tượng trên giao diện là các components
  • Hiểu rõ bản chất cách hoạt động các đối tượng

Cấu trúc thư mục: src |——buildUI |——Account.java |——SingUp.java |——usingUI |——MainClass.java Code tham khảo dưới đây được viết trên JDK ver 8.x: File Account.java:

  
package buildUI;
public class Account {  
    // Thuoc tinh  
    private String userName;  
    private String password;  
    private String access;
    // Ham khoi tao khong tham so  
    public Account(){  
        userName="";  
        password="";  
        access="";  
    }
    // Ham khoi tao co doi so  
    public Account(String userName, String password, String access){  
        this.userName=userName;  
        this.password=password;  
        this.access=access;  
    }
    // Cac ham getter va setter  
    public String getUserName() {  
        return userName;  
    }
    public void setUserName(String userName) {  
        this.userName = userName;  
    }
    public String getPassword() {  
        return password;  
    }
    public void setPassword(String password) {  
        this.password = password;  
    }
    public String getAccess() {  
        return access;  
    }
    public void setAccess(String access) {  
        this.access = access;  
    }  
}

File SingUp.java:

  
package buildUI;
import javax.swing.*;  
import java.awt.*;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.util.ArrayList;
public class SingUp extends JFrame implements ActionListener {  
    // Khai bao cac component  
    JLabel lbUser=new JLabel("Username: ");  
    JLabel lbPassword=new JLabel("Password: ");  
    JTextField txtUser=new JTextField();  
    JPasswordField txtPassword=new JPasswordField();
    JLabel lbAccess=new JLabel("Access right: ");  
    JComboBox cbAccess=new JComboBox();
    JButton btnSave=new JButton("Save");  
    JButton btnCancel=new JButton("Cancel");
    // Luu danh sach nguoi dung  
    ArrayList listUser=new ArrayList();
    // Ham khoi tao  
    public SingUp(String title){  
        super(title);
        // Tao container  
        Container con=this.getContentPane();
        // Tao panel 1 chua username, pass, access  
        JPanel panel1=new JPanel();  
        panel1.setLayout(new GridLayout(3, 2));  
        panel1.add(lbUser);  
        panel1.add(txtUser);  
        panel1.add(lbPassword);  
        panel1.add(txtPassword);
        // Tao danh sach quyen truy cap  
        cbAccess.addItem("Admin");  
        cbAccess.addItem("Teacher");  
        cbAccess.addItem("Student");
        panel1.add(lbAccess);  
        panel1.add(cbAccess);
        // Tao panel 2 chua buttun save, access  
        JPanel panel2=new JPanel();  
        panel2.setLayout(new FlowLayout());  
        panel2.add(btnSave);  
        panel2.add(btnCancel);
        // Dat phuong thuc trang thai  
        btnSave.addActionListener(this);  
        btnCancel.addActionListener(this);
        // Dat panel 1 o vung trung tam  
        con.add(panel1);
        // Dat panel 2 vao vung South  
        con.add(panel2, "South");
        this.pack();  
        this.setVisible(true);  
    }
    @Override  
    public void actionPerformed(ActionEvent e) {  
        // Neu click btn save thi lay du lieu cua cac truong  
        if(e.getActionCommand().equals("Save")) {  
            String userName = txtUser.getText();  
            String passWord = txtPassword.getText();  
            String access = (String) cbAccess.getSelectedItem();
            // Tao nguoi dung moi  
            Account newUser = new Account(userName, passWord, access);
            // Them nguoi dung vao danh sach  
            listUser.add(newUser);  
        } else {  
            // Neu click Cancel thi thoat chuong trinh  
            this.dispose();  
        }  
    }  
}

File MainClass.java:

  
package usingUI;
import buildUI.SingUp;
public class MainClass {  
    public static void main(String[] args) {  
        // Tao giao dien cho phep dang ky  
        SingUp singUp=new SingUp("Sign Up");  
    }  
}

Kết quả chương trình:

Hướng dẫn làm form đổi mật khẩu java

Kết luận:

  • Bạn có thể tham khảo thêm khóa học lập trình Java từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học lập trình C từ cơ bản đến nâng cao. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Thành thạo lập trình C#. Xem tại đây
  • Bạn có thể tham khảo thêm khóa học Ôn tập OOP cơ bản trong Java. Xem tại đây