GUI event handling trong lap trinh

31 398 0
GUI event handling  trong lap trinh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Mô hình sự kiện Những lớp sự kiện Những Event Listener – Phương thức ActionListener – Phương thức MouseListener – Phương thức MouseMotionListener – Phương thức WindowListener – Những hướng dẫn cho việc tạo những ứng dụng xử lý sự kiện. 2Mô hình sự kiện Mô hình sự kiện Mô hình để xử lý những tương tác của người dùng với thành phần giao diện. Miêu tả bằng cách nào chương trình có thể trả lời những tương tác người dùng. 3 thành phần quan trọng Event source Event ListenerHandler Event Object 3Mô hình sự kiện Event source Thành phần giao diện tạo ra sự kiện. Ví dụ: button, mouse, keyboard Event ListenerHandler Nhận những sự kiện và xử lý tương tác của người dùng Ví dụ: Hiển thị những thông tin cho người dùng. Tác vụ tính toán ... Mô hình sự kiện Event Object Tạo ra khi sự kiện xảy ra. Chứa tất cả những thông tin về sự kiện mà nó xảy ra: Loại sự kiện xảy ra. Nguồn của sự kiện 5Mô hình sự kiện Một listener được đăng ký với một nguồn Listener được đăng ký, và nó chờ cho tới khi sự kiện xảy ra. Khi sự kiện xảy ra Một đối tượng sự kiện được tạo ra Đối tượng sự kiện được kích hoạt bằng nguồn đã đăng ký listener Mỗi lần listener nhận đối tượng sự kiện từ nguồn. Giải mã những thông điệp Xử lý sự kiện mà nó xuất hiện 6Mô hình sự kiện 7Đăng ký Listener Nguồn sự kiện đăng ký một listener void addListener(Listener listenerObj) Trong đó: t ùy thuộc vào loại nguồn sự kiện: Key, Mouse, Focus, Component, Action và những cái khác. Một nguồn sự kiện có thể đăng ký vài Listener. Listener huỷ bỏ đăng ký. void removeListener(Listener listenerObj)

GUI Event Handling Nội dung Mô hình kiện Những lớp kiện Những Event Listener – Phương thức ActionListener – Phương thức MouseListener – Phương thức MouseMotionListener – Phương thức WindowListener – Những hướng dẫn cho việc tạo ứng dụng xử lý kiện Mô hình kiện Mô hình kiện Mô hình để xử lý tương tác người dùng với thành phần giao diện Miêu tả cách chương trình trả lời tương tác người dùng thành phần quan trọng Event source Event Listener/Handler Event Object Mô hình kiện Event source Thành phần giao diện tạo kiện Ví dụ: button, mouse, keyboard Event Listener/Handler Nhận kiện xử lý tương tác người dùng Ví dụ: Hiển thị thông tin cho người dùng Tác vụ tính toán … Mô hình kiện Event Object Tạo kiện xảy Chứa tất thông tin kiện mà xảy ra: Loại kiện xảy Nguồn kiện Mô hình kiện Một listener đăng ký với nguồn Listener đăng ký, chờ kiện xảy Khi kiện xảy Một đối tượng kiện tạo Đối tượng kiện kích hoạt nguồn đăng ký listener Mỗi lần listener nhận đối tượng kiện từ nguồn Giải mã thông điệp Xử lý kiện mà xuất Mô hình kiện Đăng ký Listener Nguồn kiện đăng ký listener void addListener(Listener listenerObj) Trong đó: tùy thuộc vào loại nguồn kiện: Key, Mouse, Focus, Component, Action khác Một nguồn kiện đăng ký vài Listener Listener huỷ bỏ đăng ký void removeListener(Listener listenerObj) Những class kiện Một đối tượng kiện có class kiện kiểu liệu tham chiếu Lớp EventObject Trong gói java.util Lớp AWTEvent Một lớp trực tiếp EventObject Định nghĩa gói java.awt Gốc tất kiện dựa AWT Lớp có tên quy ước Event Những lớp kiện Event Classes Miêu tả ComponentEvent Extends AWTEvent Được thể component di chuyển, thay đổi kích thước, hiển thị ẩn InputEvent Extends ComponentEvent Lớp kiện gốc trìu tượng cho tất lớp kiện input ActionEvent Exends AWTEvent Được thể button nhấn, list item double-click, menu item chọn ItemEvent Extends AWTEvent Được thể item chọn bỏ chọn chẳng hạn List checkbox KeyEvent Extends InputEvent Được thể key press, release, type MouseEvent Extends InputEvent Được thể nút nhấn chuột press, release or click(press+release), trỏ chuột di chuyển vào khỏi vùng component hiển thị TextEvent Extends AWTEvent Được thể giá trị text field text area thay đổi WindowEvent Extends ComponentEvent Được thể sổ close, open, active, deactive, iconified, deiconified focus chuyển vào cửa sổ 10 Ví dụ Mouse Event import java.awt.*; import java.awt.event.*; import javax.swing.*; public class MouseEventsDemo extends JFrame implements MouseListener, MouseMotionListener { JTextField tf; public MouseEventsDemo(String title){ super(title); tf = new JTextField(60); addMouseListener(this); } public void launchFrame(Container c) { /* Add components to the frame */ c.setLayout(new BorderLayout()); c.add(tf, BorderLayout.SOUTH); setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void mouseClicked(MouseEvent me) { String msg = "Mouse clicked."; tf.setText(msg); } 17 Ví dụ Mouse Event public void mouseEntered(MouseEvent me) { String msg = "Mouse entered component."; tf.setText(msg); } public void mouseExited(MouseEvent me) { String msg = "Mouse exited component."; tf.setText(msg); } public void mousePressed(MouseEvent me) { String msg = "Mouse pressed."; tf.setText(msg); } public void mouseReleased(MouseEvent me) { String msg = "Mouse released."; tf.setText(msg); } public void mouseDragged(MouseEvent me) { String msg = "Mouse dragged at " + me.getX() + "," + me.getY(); tf.setText(msg); } 18 Ví dụ Mouse Event public void mouseMoved(MouseEvent me) { String msg = "Mouse moved at " + me.getX() + "," + me.getY(); tf.setText(msg); } public static void main(String args[]) { MouseEventsDemo med = new MouseEventsDemo("Mouse Events Demo"); med.launchFrame(med.getContentPane()); } } 19 Ví dụ Close Window import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CloseFrame extends JFrame implements WindowListener { JLabel label; public CloseFrame(String title) { super(title); label = new JLabel("Close the frame."); this.addWindowListener(this); } void launchFrame(Container c) { c.add(label); setSize(300,300); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(this, "Close window"); } 20 Ví dụ Close Window public void windowDeactivated(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { JOptionPane.showMessageDialog(this, "Open window"); } public static void main(String args[]) { CloseFrame cf = new CloseFrame("Close Window Example"); cf.launchFrame(cf.getContentPane()); } } 21 Những class Adapter Tại phải sử dụng class Adapter? Thực thi tất phương thức interface nhiều thời gian Chỉ cần quan tâm thực thi vài phương thức Những class Adapter Xây dựng Java Thực thi tất phương thức listener Những thực thi phương thức rỗng 22 Ví dụ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CloseFrameAdapter extends JFrame{ CFListener w = new CFListener(this); public CloseFrameAdapter(String title) { super(title); this.addWindowListener(w); } void launchFrame(Container c) { setSize(300,300); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String args[]) { CloseFrameAdapter cf = new CloseFrameAdapter("Close Window Example"); cf.launchFrame(cf.getContentPane()); } } 23 Ví dụ class CFListener extends WindowAdapter { CloseFrameAdapter ref; public CFListener( CloseFrameAdapter ref ){ this.ref = ref; } public void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(this, “Close window"); } } 24 Inner Classes Class khai báo class khác Tại phải sử dụng inner class Giúp đơn giản chương trình Đặc biệt xử lý kiện 25 Ví dụ import java.awt.*; import java.awt.event.*; import javax.swing.*; class CloseFrameInnerClass extends JFrame{ public CloseFrameInnerClass(String title) { super(title); this.addWindowListener(new CFListener()); } void launchFrame() { setSize(300,300); setVisible(true); } class CFListener extends WindowAdapter { public void windowClosing(WindowEvent e) { System.out.println("window closing"); dispose(); System.exit(1); } } public static void main(String args[]) { CloseFrameInnerClass cf = new CloseFrameInnerClass("Close Window Example"); cf.launchFrame(); } } 26 Giấu tên class inner Không đặt tên class inner Tại lại giấu tên class inner? Làm cho code bạn đơn giản Đặc biệt xử lý kiện 27 Ví dụ import java.awt.*; import java.awt.event.*; import javax.swing.*; class CloseFrameAnon extends JFrame{ public CloseFrameAnon(String title) { super(title); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.out.println("window closing"); dispose(); System.exit(1); } }); } void launchFrame() { setSize(300,300); setVisible(true); } public static void main(String args[]) { CloseFrameAnon cf = new CloseFrameAnon("Close Window Example"); cf.launchFrame(); } } 28 Tóm tắt Mô hình kiện Đăng ký listener void addListener(Listener listenerObj) Listener chờ kiện xảy Khi kiện xảy Đối tượng kiện tạo Object kích hoạt nguồn đăng ký listener Khi listener nhận đối tượng kiện: Giải mã thông điệp Xử lý kiện 29 Tóm tắt Những thành phần mô hình kiện Nguồn kiện Xử lý kiện Đối tượng kiện Những class kiện Lớp EventObject Lớp AWTEvent Gốc tất kiện AWT Những lớp đặt tên theo cách: Event Những Listener Event ActionListener Method MouseListener Methods MouseMotionListener Methods WindowListener Methods 30 Tóm tắt Tạo ứng dụng giao diện với sử lý kiện Tạo GUI class Miêu tả hiển thị hình ảnh ứng dụng giao diện bạn Tạo class thực thi listener inteface phù hợp Có thể tham chiếu tới class bước Trong việc thực thi class Override tất phương thức listener phù hợp Miêu tả phương thức mà bạn muốn kiện xử lý Có thể đưa thực thi rỗng cho phương thức mà bạn không cần Đăng ký đối tượng listener với nguồn Đối tượng thể lới listener bước Sử dụng phương thức addListener 31 [...]... void windowActivated(WindowEvent e) { } public void windowClosed(WindowEvent e) { } public void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(this, "Close window"); } 20 Ví dụ Close Window public void windowDeactivated(WindowEvent e) { } public void windowDeiconified(WindowEvent e) { } public void windowIconified(WindowEvent e) { } public void windowOpened(WindowEvent e) { JOptionPane.showMessageDialog(this,... void mouseDragged(MouseEvent e) Chứa những xử lý khi phím chuột nhấn vào component sau đó kéo lê chuột public void mouseMoved(MouseEvent e) Chứa những xử lý khi con trỏ chuột di chuyển vào trong component, không nhấn phím chuột 14 Những phương thức của WindowListener public void windowOpened(WindowEvent e) Chứa những xử lý cho sự kiện cửa sổ được mở public void windowClosing(WindowEvent e) Chứa những... void windowClosed(WindowEvent e) Chứa những xử lý cho sự kiện cửa sổ sau khi đóng public void windowActivated(WindowEvent e) Chứa những xử lý cho sự kiện cửa sổ kích hoạt public void windowDeactivated(WindowEvent e) Chứa những xử lý cho sự kiện ẩn cửa sổ public void windowIconified(WindowEvent e) Chứa những xử lý cho sự kiện làm thu nhỏ cửa sổ public void windowDeiconified(WindowEvent e) Chứa những xử... Đăng ký đối tượng listener với nguồn Đối tượng là thể hiện của lới listener trong bước 2 Sử dụng phương thức addListener 16 Ví dụ Mouse Event import java.awt.*; import java.awt .event. *; import javax.swing.*; public class MouseEventsDemo extends JFrame implements MouseListener, MouseMotionListener { JTextField tf; public MouseEventsDemo(String title){ super(title); tf = new JTextField(60); addMouseListener(this);... setVisible(true); } public void mouseClicked(MouseEvent me) { String msg = "Mouse clicked."; tf.setText(msg); } 17 Ví dụ Mouse Event public void mouseEntered(MouseEvent me) { String msg = "Mouse entered component."; tf.setText(msg); } public void mouseExited(MouseEvent me) { String msg = "Mouse exited component."; tf.setText(msg); } public void mousePressed(MouseEvent me) { String msg = "Mouse pressed.";... mouseReleased(MouseEvent me) { String msg = "Mouse released."; tf.setText(msg); } public void mouseDragged(MouseEvent me) { String msg = "Mouse dragged at " + me.getX() + "," + me.getY(); tf.setText(msg); } 18 Ví dụ Mouse Event public void mouseMoved(MouseEvent me) { String msg = "Mouse moved at " + me.getX() + "," + me.getY(); tf.setText(msg); } public static void main(String args[]) { MouseEventsDemo med... public void mouseClicked(MouseEvent e) Chứa những xử lý cho sự kiện chuột click public void mouseEntered(MouseEvent e) Chứa những xử lý cho sự kiện chuột di chuyển vào component public void mouseExited(MouseEvent e) Chứa những xử lý cho sự kiện chuột ra khỏi component public void mousePressed(MouseEvent e) Chứa những xử lý cho sự kiện nhấn chuột public void mouseReleased(MouseEvent e) Chứa những xử lý... kiện Xử lý sự kiện Đối tượng sự kiện Những class sự kiện Lớp EventObject Lớp AWTEvent Gốc của tất cả các sự kiện AWT Những lớp con đặt tên theo cách: Event Những Listener Event ActionListener Method MouseListener Methods MouseMotionListener Methods WindowListener Methods 30 Tóm tắt Tạo một ứng dụng giao diện với sử lý sự kiện 1 Tạo GUI class Miêu tả và hiển thị hình ảnh của ứng dụng giao diện... CloseFrameAdapter ref ){ this.ref = ref; } public void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(this, “Close window"); } } 24 Inner Classes Class được khai báo trong class khác Tại sao phải sử dụng inner class Giúp đơn giản chương trình Đặc biệt là trong xử lý sự kiện 25 Ví dụ import java.awt.*; import java.awt .event. *; import javax.swing.*; class CloseFrameInnerClass extends JFrame{... làm phóng to cửa sổ 15 Tạo các ứng dụng giao diện với xử lý sự kiện 1 Tạo GUI class Miêu tả và hiển thị hình ảnh của ứng dụng giao diện của bạn 2 Tạo một class thực thi listener inteface phù hợp Có thể tham chiếu tới cùng class trong bước 1 3 Trong việc thực thi class Override tất cả các phương thức của listener phù hợp Miêu tả trong mỗi phương thức mà bạn muốn sự kiện được xử lý như thế nào Có thể đưa

Ngày đăng: 09/08/2016, 13:55

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan