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ả. 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: 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: 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ếtVậ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:
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
|