GUI cung cấp chức năng nhập liệu theo cách thân thiện với người dùng Các bộ thư viện: AWT, SWING, SWT… AWT là viết tắt của Abstract Windowing Toolkit AWT là một bộ các lớp trong
Trang 2 Giới thiệu về GUI (Graphical user interface)
Trang 3 GUI cung cấp chức năng nhập liệu theo cách
thân thiện với người dùng
Các bộ thư viện: AWT, SWING, SWT…
AWT là viết tắt của Abstract Windowing
Toolkit
AWT là một bộ các lớp trong Java cho phép
chúng ta tạo GUI và chấp nhận các nhập liệu
của người dùng thông qua bàn phím và chuột.
3/25
Giới thiệu về GUI
Trang 4 AWT cung cấp các thành phần khác nhau để
tạo GUI:
• Vật chứa (Container )
• Thành phần (Component)
• Trình quản lý cách trình bày (Layout manager)
• Đồ họa (Graphic) và các tính năng vẽ (draw)
Trang 5 Gói AWT chứa các lớp, giao diện và các gói
Trang 6 Container là vùng mà bạn có thể đặt các thành phần giao diện của bạn vào đó
Gói java.awt chứa một lớp gọi là Container
Frame và Panel là các vật chứa thường được
Trang 7 Frame: các constructor để tạo frame
• Frame(): Tạo một frame nhưng không hiển thị
Trang 8 Ví dụ
import java.awt.*;
public class MyFrame extends Frame {
public MyFrame(String title){
super(title);
}
public static void main(String[] args){
MyFrame myframe=new MyFrame("Hello"); myframe.setSize(300, 200);
Trang 9 Panel được sử dụng để nhóm một số các thành phần lại với nhau
• Hàm khởi tạo: Panel()
Dialog: là một đối tượng cửa sổ con của một
Trang 10 Ví dụ
public class MyPanel extends Panel {
public static void main(String[] args){
MyPanel p=new MyPanel();
Frame f=new Frame("Test Panel");
Trang 11 Các lớp thành phần
11/25
Thành phần (Components)
Trang 16 Checkbox và RadioButton
• Checkbox()
• Checkbox(String text)
• Tạo RadioButton
CheckboxGroup cg=new CheckboxGroup();
Checkbox male=new Checkbox(“small", cg, true);
Checkbox female=new Checkbox(“medium", cg, false);
16/25
Thành phần (Components)
Trang 17 Danh sách chọn lựa (Choice List)
Choice colors=new Choice();
colors.addItem("Red");
colors.addItem("Green");
17/25
Thành phần (Components)
Trang 18 Các kiểu trình bày (Layout manager)
Trang 19 Null layout: khi không sử dụng layout
manager
• setLayout(null)
• Sử dụng các hàm thiết lập vị trí
public void setLocation(Point p)
public void setSize(Dimension p)
public void setBounds(Rectangle r)
19/25
Quản lý cách trình bày
Trang 20 FlowLayout manager
• ‘FlowLayout’ là layout manager mặc định cho
Applet và Panel
• Các thành phần được xắp xếp từ góc trái trên đến
góc phải dưới của màn hình
Trang 21 BorderLayout Manager
• ‘BorderLayout’ là layout manager mặc định cho
‘Window’, ‘Frame’ và ‘Dialog’
• Layout này xắp xếp tối đa 5 thành phần trong một container
Trang 24 GUI là mô hình hướng sự kiện (event-driven)
• Phát sinh các sự kiện khi người dùng tương tác GUI
• Thông tin về sự kiện được chứa trong các đối tượng
thừa kế từ lớp java.awt.event hoặc or
Trang 25 Event source (nguồn sự kiện): Đối tượng sản sinh
sự kiện
Bộ lắng nghe (listener): nhận và xử lý sự kiện
Nhiều bộ nghe có thể được đăng ký cho 1 đối tượng
Một bộ nghe có thể đăng ký cho nhiều đối tượng
25/25
Xử lý sự kiện
Trang 26 Ví dụ: Xử lý sự kiện khi 1 nút được nhấn
26/25
Xử lý sự kiện
Trang 27 Cài đặt giao diện listener thích hợp
VD: class MyListener implements ActionListener
Thi hành các phương thức của listener.
class MyListener implements
ActionListener{
public void actionPerformed(ActionEvent e) {
//code
} }
27/25
Xử lý sự kiện
Trang 28 Xác định tất cả các thành phần tạo ra sự kiện
Đăng ký bộ nghe sự kiện (event listener) đến 1 thành phần
obj: thành phần tạo ra sự kiện
h: là bộ nghe sự kiện loại XX
VD: button1.addActionListener(new
myListener())
28/25
Xử lý sự kiện
Trang 29 Code 1
class MyListener implements ActionListener{
public void actionPerformed(ActionEvent e)
Trang 30public class ButtonEvent extends Frame {
private Button btn=new Button("Click Here");
public static void main(String[] arg){
ButtonEvent myclass=new ButtonEvent();
Trang 31 Code 2
public class ButtonEvent2 extends Frame
implements ActionListener{
private Button btn=new Button("Click Here");
public void actionPerformed(ActionEvent e) {
Trang 32public static void main(String[] arg){
ButtonEvent myclass=new ButtonEvent();
Trang 33 Bảng sau đây chỉ ra các sự kiện khác nhau và
mô tả về chúng
33/25
Xử lý sự kiện
Trang 34 Các interface của các listener
34/25
Xử lý sự kiện
ComponentListener
Trang 35 Danh sách các listener cho các thành phần
35/25
Xử lý sự kiện
Trang 36 Lấy thông tin event:
• Object getSource(): trả lại đối tượng đã gây ra
Trang 37 Các lớp thích nghi (Event Adapters)
• Nhiều listener interface có nhiều hơn 1 phương thức
• Sử dụng chi 1 phương thức của interface, ta phải
thực thi tất cả các phương thức => không cần thiết
37/25
Xử lý sự kiện
Trang 38 Các lớp thích nghi (Event Adapters)
• Sử dụng Adapter, ta chỉ cần định nghĩa phương
Trang 39class MyAdapter extends WindowAdapter{
public void windowClosing (WindowEvent event)
Trang 40 Các lớp lồng vô danh (Anonymous Inner