Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
386,98 KB
Nội dung
1 Chương 7: Xử lý sự kiệnChương 7: Xử lý sự kiện GVLT: Trần Anh Dũng 2 Nhắc lại GUI (1)Nhắc lại GUI (1) Tách ñược ñiều khiển của chương trình với dữ liệu. Gói awt/swing của Java bao gồm một tập các lớp cho phép người lập trình tạo ra GUI của ứng dụng. Frame/JFrame và Panel/JPanel là các container thường ñược dùng ñể tạo ra ứng dụng chạy ñộc lập (stand-alone application). Trình quản lý Layout manager giúp bố trí các component lên GUI. Trong gói awt có 5 loại Layout khác nhau 3 Nhắc lại GUI (2)Nhắc lại GUI (2) Thiết lập layout cho một container. FlowLayout là bố cục mặc ñịnh của Panel BorderLayout là bố cục mặc ñịnh của Frame. GridLayout là cách bố trí các component vào container dạng 1 lưới rows hàng cols cột. GridBagLayout mở rộng của GridLayout. ðể dùng GridBagLayout GridBagConstraint. NullLayout là cách bố trí tự do. Một GUI có bố cục phức tạp phân tích thành nhiều thành phần, mỗi thành phần là 1 panel có layout riêng. 4 Nội dungNội dung Giới thiệu lập trình hướng sự kiện Mô hình xử lý sự kiện Hành ñộng, sự kiện và lắng nghe. Các lớp sự kiện AWT, interface lắng nghe sự kiện 5 Lập trình hướng thủ tục (Procedural programming) Lập trình hướng sự kiện (event-driven programming) Tùy vào các tương tác giữa người dùng với chương trình: Chọn một chức năng trong ứng dụng Mở hoặc ñóng một cửa sổ Nhận dòng văn bản Thay ñổi tiêu ñiểm (focus) Thay ñổi trạng thái … Lập trình xử lý sự kiện (1)Lập trình xử lý sự kiện (1) 6 Khi có một tương tác xảy ra thì một sự kiện ñược gởi ñến chương trình. Thông tin về sự kiện thường ñược lưu trữ trong một ñối tượng dẫn xuất từ lớp AWTEvent. Những kiểu sự kiện trong gói java.awt.event có thể dùng cho cả những component awt và swing. ðối với thư viện JFC thì có thêm những kiểu sự kiện mới trong gói java.swing.event. Lập trình xử lý sự kiện (2)Lập trình xử lý sự kiện (2) 7 Có 3 yếu tố quan trọng trong mô hình xử lý sự kiện: Nguồn phát sinh sự kiện (event source) Sự kiện (event object) Bộ lắng nghe sự kiện (event listener) Mô hình xử lý sự kiện (1)Mô hình xử lý sự kiện (1) Source Object Trigger an event Listener Object Register a listener object EventObject Event Handler Notify listener Generate an event User action 8 Mô hình xử lý sự kiện (2)Mô hình xử lý sự kiện (2) Nguồn phát sinh sự kiện cần phải ñăng ký “bộ lắng nghe” ñể xử lý khi người dùng tác ñộng class MyMenuItemListener implements ActionListener { … } 9 Các lớp sự kiện java.awt.eventCác lớp sự kiện java.awt.event 10 Các lớp sự kiện (tt)Các lớp sự kiện (tt) Lớp sự kiện Mô tả ActionEvent Phát sinh khi một button ñược nhấn, một item trong danh sách chọn lựa ñược nhắp ñôi hay một menu ñược chọn. AdjustmentEvent Phát sinh khi một thanh scrollbar ñược sử dụng. ComponentEvent Phát sinh khi một thành phần ñược thay ñổi kích thước, ñược di chuyển, bị ẩn hay làm cho hoạt ñộng ñược. FocusEvent Phát sinh khi một thành phần mất hay nhận focus. KeyEvent Phát sinh khi input ñược nhận từ bàn phím. [...]... X lý s ki n bàn phím (3) Ví d : Minh h a vi c x lý s ki n phím thông qua các phương th c c a interface KeyListener Xây d ng l p KeyDemo hi n th c interface KeyListener c 3 phương th c trong KeyListener ph i ñư c cài ñ t trong chương trình Demo 28 M t s ví d minh h a (1) Ví d 1: Xây d ng chương trình và x lý s ki n như sau Chương trình 29 M t s ví d minh h a (2) Ví d 2: Xây d ng chương trình và x lý. .. 32 Bài t p (1) 1 Vi t chương trình minh h a vi c s d ng m t s component cơ b n trong thư vi n java.awt và javax.swing 2 Vi t chương trình MyNotePad tương t Windows NotePad c a 3 Vi t chương trình minh h a ho t ñ ng máy tính cá nhân ñơn gi n 33 Bài t p (2) 4 Vi t chương trình minh h a x lý s ki n menu như sau Ngu n phát sinh s ki n (MenuItem) c n ph i ñăng ký “b l ng nghe” ñ x lý khi ngư i dùng tác... trình x lý s ki n Khai báo public MyClass implements ActionListener ðăng ký Component.addActionListener(myclass); Cài ñ t public void actionPerformed(ActionEvent e) { //…… } 15 Ví d x lý s ki n Ví d 1: T o b l ng nghe bi n c cho ñ i tư ng khung ch a Frame, và x lý bi n c ñóng c a s T o và ñăng ký m t b l ng nghe cho m t component trên GUI (Frame) Cài ñ t các phương th c qu n lý và x tương ng lý s ki... } 19 Ví d X lý s ki n (2) Có th dùng l p tr u tư ng WindowAdapter ñ t o ra b l ng nghe WindowAdapter hi n th c interface WindowListener nên l p o này cũng có 7 phương th c gi ng như giao di n WindowListener 20 Ví d X lý s ki n (3) Ví d 2: Trình bày cách tính g p ñôi c a m t s ñư c nh p vào Chương trình ñư c th c hi n b ng cách k t h p các phương th c c a l p, nghĩa là các phương th c x lý s ki n và... lý s ki n như sau Chương trình 29 M t s ví d minh h a (2) Ví d 2: Xây d ng chương trình và x lý s ki n như sau Chương trình 30 M t s ví d minh h a (3) Ví d 3: X lý s ki n khi ngư i dùng ch n ngày (Monday, Tuesday, …) trong List thì chương trình s hi n th ngày tương ng trên nhãn phía trên Chương trình 31 M t s ví d minh h a (3) Ví d 3: Hi n th ngày gi c a h th ng Dùng ñ i tư ng l p Date (java.util.Date)... click v i s tr giúp c a hàm getSource() và tr v k t qu thích h p 21 X lý s ki n chu t (1) Java cung c p hai intefaces l ng nghe MouseListener MouseMotionListener ð qu n lý và x lý các s ki n liên quan ñ n thi t b chu t Nh ng s ki n chu t có th “b y” cho b t kỳ component nào trên GUI mà d n xu t t java.awt.component M i phương th c x lý s ki n chu t có m t tham s MouseEvent ch a thông tin v s ki n chu... 24 X lý s ki n chu t (4) Ví d : Vi t chương trình MouseTracker minh h a vi c dùng nh ng phương th c c a các interfaces MouseListener và MouseMotionListener ñ “b y” và x lý các s ki n chu t tương ng Demo 25 X lý s ki n bàn phím (1) ð x lý s ki n bàn phím java h tr m t b l ng nghe s ki n ñó là interface KeyListener M t s ki n bàn phím ñư c phát sinh khi ngư i dùng nh n và nh m t phím trên bàn phím M t... mouseExited(MouseEvent event) 23 X lý s ki n chu t (3) Các phương th c c a interface MouseMotionListener: public void mouseDragged(MouseEvent even ) Phương th c này ñư c g i khi ngư i dùng nh n m t nút chu t và kéo trên m t component public void mouseMoved(MouseEvent event) Phương th c này ñư c g i khi di chuy n chu t trên component 24 X lý s ki n chu t (4) Ví d : Vi t chương trình MouseTracker minh h... ItemEvent ItemListener WindowEvent WindowListener TextEvent TextListener MouseEvent MouseListener MouseMotionListener KeyEvent KeyListener 13 Hành ñ ng, s ki n, l ng nghe L p s ki n B l ng nghe Hàm x lý ActionEvent ActionListener actionPerformed(ActionEvent) ItemEvent ItemListener itemStateChanged(ItemEvent) WindowEvent WindowListener windowClosing(WindowEvent) windowOpened(WindowEvent) windowIconified(WindowEvent)... nào trên GUI mà d n xu t t java.awt.component M i phương th c x lý s ki n chu t có m t tham s MouseEvent ch a thông tin v s ki n chu t phát sinh ch ng h n như: t a ñ x, y nơi s ki n chu t x y ra 22 X lý s ki n chu t (2) Các phương th c c a interface MouseListener: public void mousePressed(MouseEvent event) public void mouseClicked(MouseEvent event) ðư c g i khi m t nút chu t ñư c nh n và nh trên component . trình xử lý sự kiện (2) 7 Có 3 yếu tố quan trọng trong mô hình xử lý sự kiện: Nguồn phát sinh sự kiện (event source) Sự kiện (event object) Bộ lắng nghe sự kiện (event listener) Mô hình xử. hướng sự kiện Mô hình xử lý sự kiện Hành ñộng, sự kiện và lắng nghe. Các lớp sự kiện AWT, interface lắng nghe sự kiện 5 Lập trình hướng thủ tục (Procedural programming) Lập trình hướng sự. ñổi trạng thái … Lập trình xử lý sự kiện (1)Lập trình xử lý sự kiện (1) 6 Khi có một tương tác xảy ra thì một sự kiện ñược gởi ñến chương trình. Thông tin về sự kiện thường ñược lưu trữ trong