Giới Thiệu• Java xử lý sự kiện xảy ra trên các thành phần đồ họa dựa trên mô hình “phát sinh sự kiện – lắng nghe sự kiện”.. • Trong mô hình này có 3 loại đối tượng sau: – Đối tượng phát
Trang 1XỬ LÝ SỰ KiỆN
Trang 21 Giới Thiệu
• Java xử lý sự kiện xảy ra trên các thành phần đồ họa dựa trên mô hình “phát sinh sự kiện – lắng nghe sự kiện”.
• Trong mô hình này có 3 loại đối tượng sau:
– Đối tượng phát sinh sự kiện: đây là đối tượng nhận sự kiện từ
thao tác người dùng
– Đối tượng lắng nghe sự kiện: là đối tượng có nhiệm vụ xử lý sự kiện.
– Đối tượng sự kiện: là đối tượng chứa những thông tin về đối
tượng phát sinh sự kiện Đối tượng này được truyền từ đối tượng phát sinh sự kiện đến đối tượng lắng nghe sự kiện để xử lý
Trang 3Luồng GUI
• Khi một cửa số được tạo ra và hiển thị, Java
sẽ tạo ra một luồng xử lý GUI thực hiện:
– Phát hiện những sự kiện (mouse click, keypress, ) – Gởi sự kiện đến đối tượng lắng xử lý sự kiện
Trang 4Quá trình xử lý sự kiện
• Khi một sự kiện phát sinh, luồng xử lý GUI (GUI
thread) xác định nguồn sự kiện và kiểu sự kiện.
• Nếu có một đối tượng lắng nghe sự kiện đăng ký
với nguồn sự kiện đó, thì một đối tượng sự kiện
được tạo ra.
• Với mỗi đối tượng xử lý sự kiện cho kiểu sự kiện
này, Java (GUI thread) sẽ gọi phương thức xử lý sự kiện thích hợp cửa đối tượng xử lý sự kiện và truyền
cho nó tham số là đối tượng sự kiện
Trang 5Quá trình xử lý sự kiện
Trang 6Các bước để kiểm soát sự kiện
Có 3 bước:
• Xác định kiểu Listener liên quan đến sự kiện cần xử lý:
ActionListener, TextListener, WindowListener …
• Khai báo đối tượng xử lý sự kiện
– Khai báo lớp xử lý sự kiện.
• implement của một giao diện: ActionListener, MouseListener,
• extends của một lớp thực thi giao điện: WindowAdapter,
MouseAdapter,
– Cài đặt tường minh các phương thức xử lý sự kiện
• Đăng ký đối tượng xử lý sự kiện với đối tượng nguồn
sự kiện
– add<Loại SK>Listener(<đt xử lý SK>);
Trang 7Lớp Adapter
• Tại sao Java hỗ trợ phải dùng lớp Adapter ?
– Cài đặt tất cả các phương thức của giao diện nếu ta khai
báo lớp kế thừa thì chỉ cần viết đè phương thức quan tâm giảm công việc code.
• Các phương thức được cài đặt trong lớp Adapter là
rỗng.
Trang 8Các bước để kiểm soát sự kiện
Lớp xử lý sự kiện
• Danh sách các Giao diện, Lớp thực thi giao diện, và
các phương thức chính của các giao diện.
Trang 9Các bước để kiểm soát sự kiện
• Ví dụ:
Trang 10Các bước để kiểm soát sự kiện
• Ví dụ:
Trang 11Các bước để kiểm soát sự kiện
Trang 13Các kiểu sự kiện
• Một số kiểu sự kiện thông dụng sau:
Hành động gây ra sự kiện Giao diện lắng nghe sự kiện
Nhấp button, ấn Enter, hoặc gõ vào ô
Nhấp chuột khi chuột ở trên một
Chuột di chuyển trên component MouseMotionListener
Component hiển thị ComponentListener
Có hành động chọn trên Table hoặc
Trang 14– Object getSource(): trả về đối tượng nhận sự kiện.
• Giao diện ActionListener: dùng để cài đặt đối tượng
xử lý sự kiện Giao diện này chứa phương thức:
– void actionPerformed(ActionEvent ae)
– Phương thức này tự động thực hiện khi có sự kiện xảy ra trên
những đối tượng đã đăng ký.
Trang 15Xử lý sự kiện Action
• Ví dụ: Chương trình minh họa nút thoát.
Trang 16Xử lý sự kiện Action
• Ví dụ: Chương trình minh họa nút thoát.
Trang 17Xử lý sự kiện Action
• Ví dụ: Xử lý sự kiện trên nhiều đối tượng.
Trang 18Xử lý sự kiện Action
• Ví dụ: Xử lý sự kiện trên nhiều đối tượng.
Trang 19Xử lý sự kiện Action
• Ví dụ: Xử lý sự kiện trên nhiều đối tượng.
Trang 21Lớp Label
– Label(): tạo nhãn trống.
– Label(String text): tạo nhãn chứa nội dung.
– String getText(): trả về nội dung của nhãn.
– Void setText(String text): đặt nội dung vào nhãn.
Trang 22Lớp Label
• Ví dụ: Chương trình hiển thị dòng chữ “chao Java –
AWT” trên màn hình đồ hoạ.
Trang 23Lớp Label
Trang 24BorderLayout CardLayout CheckboxGroup Color
Dimension Event
Font FlowLayout FontMetrics Graphics GridBagLayout GridLayout
Image Insets
Point Polygon MenuComponent
Button Canvas Checkbox Choice Container
ScrollBar
Label List
Panel Window ScrollPane
Applet Dialog Frame
TextComponent
TextField TextArea
MenuBar
PopupMenu CheckboxMenuItem
Trang 25Lớp TextField
• Lớp TextField: dùng để tạo các ô nhập dữ
liệu.
– TextField(): tạo một TextField trống.
– TextField(String text):tạo một TextField chứa nội dung
text.
– TextField(int n): tạo TextField hiển thị được n kí tự.
Trang 26Lớp TextField
– String getText();
– Void setText(String);
Trang 27Lớp TextField
• Ví dụ: Chương trình minh hoạ nhập dữ liệu đơn
giản.
Trang 28Lớp TextField
Trang 29BorderLayout CardLayout CheckboxGroup Color
Dimension Event
Font FlowLayout FontMetrics Graphics GridBagLayout GridLayout
Image Insets
Point Polygon Rectangle MenuComponent
Button Canvas Checkbox Choice Container
ScrollBar
Label List
Panel Window ScrollPane
Applet Dialog Frame
TextComponent
TextField TextArea
MenuBar
PopupMenu CheckboxMenuItem
AWTException Exception
Trang 31Lớp TextArea
Các phương thức thường dùng:
String getText()
Void setText(String text)
Void append(String text): them dòng text vào cuối
TextArea.
Trang 33Lớp Checkbox
Trang 35Lớp Choice
Trang 36cỡ và cách bố trí của các thành phần
tin mà lớp GridLayout yêu cầu: Vị trí và kích thuớc mỗi thành phần
Trang 37Bài tập
thước (số dòng, số cột) nhập vào từ JOptionPane