| Thuật ngữ | Mô tả |
|---|---|
| Component | Các thành phần cơ bản được sử dụng để tạo giao diện người dùng như các nút, hộp văn bản, danh sách thả xuống, thanh cuộn, cửa sổ, v.v. |
| Layout | Cách các thành phần GUI được sắp xếp trên màn hình. Layout quyết định vị trí và kích thước của mỗi thành phần, giúp tạo ra một giao diện người dùng hợp lý và dễ đọc. |
| Sự kiện (Event) | Các hoạt động như nhấn nút, di chuyển chuột, nhập văn bản, v.v., mà người dùng thực hiện trong ứng dụng. Các sự kiện này kích hoạt các hành động cụ thể trong ứng dụng, như thay đổi dữ liệu hoặc chuyển đổi trạng thái |
Một số phương thức hữu ích giúp tạo và quản lý giao diện người dùng đồ họa trong Java :
| Phương thức | Mô tả |
|---|---|
| add(Component c) | Phương thức này được sử dụng để thêm một thành phần (component) vào cửa sổ (window) hoặc bảng điều khiển (container). Tham số c là đối tượng của lớp java.awt.Component hoặc một lớp con của nó, chẳng hạn như JButton, JLabel, JTextField, vv. |
| setSize(int width, int height) | Phương thức này được sử dụng để thiết lập kích thước của cửa sổ hoặc bảng điều khiển. Tham số width là chiều rộng của cửa sổ, còn height là chiều cao của cửa sổ, tính bằng pixel. |
| setLayout(LayoutManagerm) | Phương thức này được sử dụng để thiết lập bố cục (layout) của các thành phần bên trong cửa sổ hoặc bảng điều khiển. Tham số m là một đối tượng của lớp java.awt.LayoutManager, hoặc một lớp con của nó, đại diện cho loại bố cục mà bạn muốn sử dụng, chẳng hạn như FlowLayout, BorderLayout, vv. |
| setVisible(boolean status) | Phương thức này được sử dụng để hiển thị hoặc ẩn cửa sổ. Tham số status là một giá trị boolean. Nếu status là true, cửa sổ sẽ được hiển thị; nếu status là false, cửa sổ sẽ bị ẩn. |
| Thành phần | Mô tả |
|---|---|
| JFrame | Là cửa sổ chính của ứng dụng, có thể chứa nhiều thành phần khác nhau như nút, hộp văn bản, v.v. |
| JPanel | Là một container linh hoạt có thể chứa nhiều thành phần khác nhau. Panel thường được sử dụng để nhóm các thành phần hoặc tạo layout. |
| JButton | Là một nút có thể được nhấn bởi người dùng để thực hiện một hành động cụ thể. |
| JLabel | Là một vùng hiển thị văn bản hoặc hình ảnh không thể chỉnh sửa bởi người dùng, thường được sử dụng để hiển thị nhãn cho các thành phần khác. |
| JTextField | Là một hộp văn bản mà người dùng có thể nhập dữ liệu. |
| JTextArea | Tương tự như JTextField, nhưng cho phép nhập văn bản dài hơn và có thể cuộn. |
| JComboBox | Là một danh sách thả xuống cho phép người dùng chọn một trong các tùy chọn. |
| JCheckBox | Là một ô kiểm (checkbox) cho phép người dùng chọn hoặc bỏ chọn một tùy chọn cụ thể. |
| JRadioButton | Là một nút radio cho phép người dùng chọn một trong các tùy chọn duy nhất trong một nhóm các tùy chọn. |
| JScrollPane | Là một thanh cuộn được sử dụng để hiển thị nội dung khi không đủ không gian. |
| JFileChooser | Là một hộp thoại cho phép người dùng chọn tệp hoặc thư mục từ hệ thống tệp. |
| JSlider | Là một thanh trượt cho phép người dùng chọn một giá trị từ một phạm vi. |
| JProgressBar | Là một thanh tiến trình hiển thị tiến độ của một tác vụ. |
| JMenu và JMenuItem | Là các thành phần để tạo menu và các mục trong menu. |
| JTabbedPane | Là một thanh tab cho phép người dùng chuyển đổi giữa các panel khác nhau. |
| Layout | Mô tả |
|---|---|
| Swing------------BoxLayout | Sắp xếp các thành phần theo chiều ngang hoặc dọc một cách linh hoạt. Tự động điều chỉnh kích thước của các thành phần. |
| BorderLayout | Sắp xếp các thành phần thành các vùng phía bắc, phía nam, phía đông, phía tây và trung tâm. Mỗi vùng có thể chứa một thành phần duy nhất. |
| CardLayout | Hiển thị một thành phần trong một thời điểm và cho phép chuyển đổi giữa các thành phần khác nhau. Thường được sử dụng để tạo các giao diện có nhiều trạng thái. |
| FlowLayout | Sắp xếp các thành phần theo chiều ngang hoặc dọc, tự động chuyển sang dòng mới khi không đủ không gian. Phù hợp cho việc sắp xếp các thành phần theo dòng hoặc theo cột. |
| GridLayout | Sắp xếp các thành phần trong một lưới dạng hàng và cột. Các ô trong lưới có kích thước bằng nhau. |
| GridBagLayout | Cho phép bạn sắp xếp các thành phần theo cách tự do, linh hoạt, và điều chỉnh các thuộc tính kích thước của các thành phần. Phù hợp cho việc tạo các giao diện phức tạp. |
| GroupLayout | Cho phép bạn tạo các giao diện phức tạp bằng cách sử dụng các nhóm và các lề. Thường được sử dụng trong việc thiết kế giao diện trong IDE như NetBeans. |
| SpringLayout | Cho phép bạn định vị các thành phần dựa trên các ràng buộc spring (còn được gọi là spring constraint). Cung cấp kiểm soát linh hoạt về vị trí và kích thước của các thành phần. |
1: Khái niệm cơ bản về sự kiện
| STT | Khái niệm | Mô tả |
|---|---|---|
| 1 | Sự kiện (Event) | Là một hành động nào đó xảy ra trong hệ thống, chẳng hạn như bấm chuột, nhấn phím, hoặc thao tác với giao diện người dùng. |
| 2 | Người nghe sự kiện (Event Listener) | Là một đối tượng có khả năng lắng nghe và xử lý các sự kiện. Trong Java, một người nghe sự kiện được triển khai bằng cách triển khai một interface tương ứng. |
| 3 | Người phát sự kiện (Event Source) | Là đối tượng tạo ra sự kiện. Trong Java, các thành phần của giao diện người dùng như JButton, JList, JTextField, v.v. thường là người phát sự kiện. |
| 4 | Bộ xử lý sự kiện (Event Handler) | Là phần mã được thực thi khi một sự kiện được kích hoạt. Nó thường được triển khai trong phương thức của người nghe sự kiện. |
| 5 | Loại sự kiện (Event Type) | Là loại cụ thể của sự kiện, chẳng hạn như ActionEvent (được kích hoạt khi một hành động được thực hiện trên một thành phần), MouseEvent (được kích hoạt khi có tương tác chuột), KeyEvent (được kích hoạt khi có sự kiện phím nhấn), v.v. |
2: Xử lý sự kiện trong Java
| STT | Các bước | Mô tả |
|---|---|---|
| 1 | Tạo | Trong Java, mỗi loại sự kiện thường có một interface tương ứng để lắng nghe và xử lý sự kiện đó. Đầu tiên, bạn cần tạo một lớp hoặc một đối tượng thực hiện giao diện người nghe sự kiện tương ứng. Ví dụ, để lắng nghe sự kiện khi một JButton được nhấn, bạn cần triển khai ActionListener. |
| 2 | Đăng ký | Để một đối tượng có thể lắng nghe sự kiện từ một nguồn phát sự kiện, nó cần đăng ký với nguồn sự kiện bằng cách sử dụng phương thức addXXXListener(). Ví dụ, nếu bạn muốn lắng nghe sự kiện của một JButton, bạn cần sử dụng phương thức addActionListener() để đăng ký người nghe sự kiện với JButton đó. |
| 3 | Xử lý | Cuối cùng, bạn cần viết nội dung xử lý bên trong phương thức của người nghe sự kiện mà bạn đã tạo. Phương thức này sẽ được gọi khi sự kiện xảy ra và chứa mã để xử lý sự kiện đó. |
🔧 Hiểu đơn giản:
-
✅ Nút (JButton) = Một cái nút ngoài đời.
-
✅ Lời nhắn (actionPerformed) = Việc bạn muốn làm khi bấm nút, ví dụ: in ra, hiển thị thông báo, tính toán...
-
✅
addActionListener(...)= Sợi dây nối nút với lời nhắn → Khi bấm nút thì lời nhắn sẽ tự động được gọi.
🔧 Phần mở rộng :
🔹 1. ActionListener là gì?
ActionListener là một interface trong Java (được định nghĩa sẵn bởi Java Swing) dùng để xử lý các sự kiện hành động – như bấm nút, chọn menu, v.v.
Nó có đúng 1 hàm duy nhất:
Tức là: nếu bạn muốn xử lý khi người dùng bấm nút, bạn phải viết một hàm
actionPerformed().
🔹 2. Tại sao phải ghi đè actionPerformed()?
Vì ActionListener là một interface, nên khi bạn tạo một đối tượng từ new ActionListener(), bạn bắt buộc phải override (ghi đè) hàm actionPerformed().
Ví dụ:
Đây gọi là anonymous inner class: bạn không cần tạo class riêng, mà viết luôn lớp xử lý trong
new ActionListener().
🔹 3. Lambda thay thế thế nào?
Vì ActionListener chỉ có 1 phương thức (actionPerformed), nó là functional interface ⇒ bạn có thể dùng cú pháp lambda cho gọn hơn.
Tương đương:
echính làActionEventtrongactionPerformed(ActionEvent e).
3. Interface EventListener
Interface EventListener trong Java là một giao diện (interface) được sử dụng để lắng nghe (listen) và xử lý các sự kiện (events). Interface này là một phần quan trọng của mô hình lập trình sự kiện trong Java, giúp cho việc xử lý sự kiện trở nên linh hoạt và dễ dàng hơn.
EventListener không có bất kỳ phương thức cụ thể nào, thay vào đó, nó chỉ đơn giản là một đánh dấu cho các lớp khác để implement (thực thi) và lắng nghe các sự kiện. Các lớp con của EventListener được thiết kế để lắng nghe cho một loại cụ thể của sự kiện, và sau đó thực thi các hành động tương ứng khi sự kiện đó xảy ra.
Một số interface con phổ biến của Event Listener Interface :
| Interface | Phương thức | Giải thích |
|---|---|---|
| ActionListener | void actionPerformed(ActionEvent e) | Được gọi khi một hành động được thực hiện trên một thành phần, chẳng hạn như khi một JButton được nhấn hoặc một JMenuItem được chọn. |
| ComponentListener | void componentResized(ComponentEvent e)
void componentMoved(ComponentEvent e)
void componentShown(ComponentEvent e)
void componentHidden(ComponentEvent e) | Sử dụng để lắng nghe các sự kiện thay đổi trong kích thước, vị trí hoặc sự hiển thị của một thành phần, như khi cửa sổ được thay đổi kích thước, di chuyển hoặc được ẩn. |
| ItemListener | void itemStateChanged(ItemEvent e) | Được gọi khi trạng thái của một thành phần như JCheckbox hoặc JRadioButton thay đổi. |
| KeyListener | void keyPressed(KeyEvent e)
void keyReleased(KeyEvent e)
void keyTyped(KeyEvent e) | Sử dụng để lắng nghe các sự kiện từ bàn phím, như khi một phím được nhấn, nhả ra hoặc được gõ. |
| MouseListener | void mouseClicked(MouseEvent e)
void mouseEntered(MouseEvent e)
void mouseExited(MouseEvent e)
void mousePressed(MouseEvent e)
void mouseReleased(MouseEvent e) | Sử dụng để lắng nghe các sự kiện chuột, như khi chuột được nhấn, di chuyển vào hoặc ra khỏi một thành phần. |
| WindowListener | void windowOpened(WindowEvent e)
void windowClosing(WindowEvent e)
void windowClosed(WindowEvent e)
void windowIconified(WindowEvent e)
void windowDeiconified(WindowEvent e)
void windowActivated(WindowEvent e)
void windowDeactivated(WindowEvent e) | Sử dụng để lắng nghe các sự kiện liên quan đến cửa sổ, như khi cửa sổ được mở, đóng, thu nhỏ, phục hồi hoặc kích hoạt. |
| AdjustmentListener | void adjustmentValueChanged(AdjustmentEvent e) | Được gọi khi người dùng thay đổi giá trị của thanh cuộn. |
| ContainerListener | void componentAdded(ContainerEvent e)
void componentRemoved(ContainerEvent e) | Sử dụng để lắng nghe các sự kiện thêm hoặc xóa thành phần từ một container, như khi một thành phần được thêm vào hoặc loại bỏ khỏi container. |
| MouseMotionListener | void mouseDragged(MouseEvent e)
void mouseMoved(MouseEvent e) | Sử dụng để lắng nghe các sự kiện di chuyển chuột, như khi chuột được di chuyển qua một thành phần hoặc được kéo thả. |
| FocusListener | void focusGained(FocusEvent e)
void focusLost(FocusEvent e) | Được gọi khi một thành phần nhận hoặc mất trạng thái focus. |
| Interface | Adapter Class | Mô tả |
|---|---|---|
MouseListener | MouseAdapter | Dùng để xử lý các sự kiện chuột như click, press, release, enter, exit. Adapter giúp bạn chỉ cần override các phương thức bạn quan tâm. |
MouseMotionListener | MouseMotionAdapter | Dùng để xử lý sự kiện di chuyển chuột (mouseMoved, mouseDragged). |
KeyListener | KeyAdapter | Dùng để xử lý các phím bấm từ bàn phím (keyPressed, keyReleased, keyTyped). |
FocusListener | FocusAdapter | Xử lý sự kiện khi một thành phần được focus hoặc mất focus. |
WindowListener | WindowAdapter | Xử lý sự kiện cửa sổ như đóng, mở, thu nhỏ, phóng to (windowClosing, windowOpened, v.v.). |
Ví dụ :
📌 Tóm lại:
-
✔ Adapter dùng khi interface có nhiều phương thức.
-
➕ Dùng Adapter giúp code gọn hơn, không phải override tất cả.
❌ Không có
ActionListenerAdaptervìActionListenerchỉ có 1 phương thức thôi, không cần adapter, chỉ cần viết trực tiếp hoặc dùng lambda:
















.png)
.png)
.png)
.png)
.png)
Không có nhận xét nào:
Đăng nhận xét