Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
470,5 KB
Nội dung
TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THƠNG TIN BÁO CÁO BÀI TẬP LỚN MƠN LẬP TRÌNH JAVA Đề tài: Tìm hiểu lập trình bắt kiện (Event-Driven Programming) Java Viết chương trình mơ máy tính bấm tay đơn giản có chức tính cộng (+), trừ (-), nhân (*), chia (/), bậc hai (sqrt), chia nguyên lấy phần dư (%) Hình ảnh máy tính có dạng sau: CE Calculator fx-50 C MC / MR * sqrt % M- - 1/x M+ +/- + = GV hướng dẫn : Ths Ngơ Cơng Thắng Nhóm SV thực : Nguyễn Thị Thanh Bình Phạm Thị Kim Dung Nguyễn Thị Hoài Nguyễn Ngọc Kỳ Bùi Thị Bích Thủy Hà Nội 2010 MỤC LỤC LỜI MỞ ĐẦU I GIỚI THIỆU CHUNG VỀ LẬP TRÌNH BẮT SỰ KIỆN .4 Một số khái niệm .4 1.1 Sự kiện (Event) 2.Đơn vị xử lý kiện (event handler or event listener ) Lập trình bắt kiện (Event-Driven Programming) Ví dụ: II MƠ HÌNH XỬ LÍ SỰ KIỆN 12 Giới thiệu chung: .12 Mơ hình ủy thác kiện 12 Các lớp xử lý kiện 14 III XỬ LÍ SỰ KIỆN .17 Xử lý kiện chuột 17 Sự kiện bàn phím (Key events) 21 IV DEMO .26 V TỔNG KẾT 26 VI TÀI LIỆU THAM KHẢO 27 LỜI MỞ ĐẦU Các chương trình dựa Windows có giao diện người dùng đồ họa (GUI), người dùng tương tác với chương trình thơng qua Giao diện bao gồm xây dựng nhiều đối tượng (giống hộp văn bản, công cụ, biểu tượng …vv) Người dùng tương tác với đối tượng GUI, thông qua cú nhấp chuột thơng qua cách bấm phím bàn phím Các tương tác người dùng với đối tượng giao diện gọi kiện thơng báo kiện đưa vào chương trình (mà người dùng tương tác với) hệ điều hành Windows Với mong muốn tìm hiểu sâu trình bắt xử lí kiện người dùng Java nhóm chúng tơi định thực đề tài Bởi vốn kiến thức hạn hẹp với thời gian ngắn, nhóm chúng tơi khơng thể tránh nhiều thiếu sót, mong bạn thầy giáo đóng góp thêm ý kiến để đề tài nhóm chúng tơi hồn thiện Xin chân thành cảm ơn! Nhóm sinh viên! I GIỚI THIỆU CHUNG VỀ LẬP TRÌNH BẮT SỰ KIỆN ( Introduction About Event-Driven Programming) Một số khái niệm 1.1 Sự kiện (Event) Sự kiện định nghĩa loai tín hiệu báo cho chương trình có điều xảy ra…Sự kiện sinh hành động người sử dụng(Ví dụ: di chuột,kích phím chuột,ấn phím) hệ điều hành(Ví dụ: Time) Sự kiện hành động thực người sử dụng trình sử dụng ứng dụng Nếu người dùng nhấp chuột vào nút đối tượng sau kiện Click xảy Nếu người dùng di chuyển chuột sau kiện di chuyển chuột xảy Sự kiện đối tượng mô tả tình trạng thay đổi nguồn, tạo tác động người dùng tới thành phần giao diện đồ họa Một vài hoạt động tạo kiện như: ấn nút, nhập ký tự thơng qua bàn phím, chọn mục danh sách, nhấn chuột nhiều điều khiển từ ứng dụng khác Sự kiện xảy khơng trực tiếp từ tác động người dung tới giao diện Ví du: Sự kiện xảy hệ điều hành (Timer), đếm vượt giá trị, phần cứng phần mềm bị hư, kết thúc hoạt động 2.Đơn vị xử lý kiện (event handler or event listener ) • Là phương thức (hàm) nhận đầu vào từ thiết bị chuột hay bàn phím thực việc để phản ứng lại với kiện xảy thiết bị • Hàm xử lý kiện tự động gọi kiện tương ứng phát sinh Ví dụ: Một đơn vị xử lý kiện có tên “jButton18MousePressed”: private void jButton18MousePressed(MouseEvent evt) { String str=jTextField1.getText()+jButton18.getText(); jTextField1.setText(str) ; } a)Một xử lý kiện tầm thường Bởi để kiểm tra mã cho kiện vòng lặp khơng phụ thuộc vào ứng dụng, mong muốn người dùng cung cấp mã cho xử lý kiện Trong ví dụ đơn giản có xử lý kiện gọi OnKeyEnter () bao gồm đối số với chuỗi ký tự, tương ứng với mà người dùng đánh máy trước nhấn phím ENTER b)Xử lý ngoại lệ Trong số ngơn ngữ lập trình , chương trình khơng chủ yếu hướng kiện, kiện bất thường phần cứng , lỗi tràn kiểm tra chương trình xảy mà cần xử lý c)Tạo xử lý kiện Bước việc phát triển chương trình hướng kiện viết loạt chương trình , phương pháp, gọi kiện thường trình xử lý Những thói quen xử lý kiện mà chương trình trả lời Ví dụ, nút trái chuột vào nút lệnh giao diện chương trình kích hoạt thói quen mở cửa sổ, lưu liệu vào sở liệu thoát khỏi ứng dụng Bước thứ hai để xử lý kiện gắn với kiện để chức gọi kiện diễn Kết hợp với nhấp đúp chuột vào nút, tạo trình biên tập xử lý kiện (trống) liên kết với người sử dụng nhấn vào nút mở cửa sổ văn để bạn chỉnh sửa xử lý kiện Bước thứ ba việc phát triển chương trình hướng kiện viết vịng lặp Đây chức để kiểm tra xuất kiện, sau gọi xử lý kiện phù hợp để xử lý Hầu hết mơi trường lập trình hướng kiện cung cấp vịng lặp chính, khơng cần phải quy định cụ thể lập trình ứng dụng RPG , ngơn ngữ lập trình đầu từ IBM, mà năm 1960 thiết kế ý tưởng tương tự lập trình hướng kiện nói trên, cung cấp tích hợp I / O vịng lặp (được gọi "chu kỳ chương trình") Lập trình bắt kiện (Event-Driven Programming) Lập trình bắt kiện cách linh hoạt phép chương trình bạn đáp ứng với nhiều yếu tố đầu vào khác kiện a Lập trình hướng thủ tục (Procedural programming) : Chương trình thực theo thứ tự thủ tục Kĩ thuật lập trình dựa quan niệm phân tích chức xử lí thơng tin thành chức nhỏ hơn, làm mịn dần trình xây dựng đơn thể Chương trình dùng cấu trúc điều khiển bản: tuần tự, rẽ nhánh, lặp khỏi lặp Lập trình hướng thủ tục sử dụng cách tiếp cận từ xuống, tức phân tách từ toàn thể đến phận, lại từ phận đến phận nhỏ Các đơn thể chương trình có cấu trúc có tính độc lập tương đối cao, giao tiếp với thông qua giao diện xác lập trước, kỹ thuật lập trình có số ưu điểm: dễ phân cơng nhiều người lập chương trình, dễ thử hiệu chỉnh chương trình b Lập trình bắt kiện (event-driven programming): Mã lệnh thực vào lúc kích hoạt kiện Nhiệm vụ lập trình để viết mã, thực xuất kiện tự động, loại lập trình gọi lập trình bắt kiện Trong chương trình này, lập trình viên khơng phải xác định làm để tạo đối tượng này, làm để đặt chúng hình làm để thay đổi thuộc tính ,các lập trình viên cần tạo cách sử dụng giao diện đồ họa tích hợp đối tượng / kiểm soát ghi mã mà phản ứng với kiện xảy tương tác người dùng Nói chung lập trình bắt kiện có nghĩa làm cho số hành động thực (thơng qua số chương trình / code) xuất kiện c)Các tính điển hình kiện lập trình bắt kiện Các kiện thường tham chiếu, đặt tên dựa đối tượng loại hành động kích hoạt kiện Ví dụ, "icon3_click" "icon3 - onClick" Vì vậy, chúng thường có hai "chìa khóa" Thường có đối tượng, tham số thiết lập, từ điển cấu trúc mảng thơng qua vào tham số sử dụng để tìm hiểu thêm mơi trường kích hoạt kiện Ví dụ, chứa phím tắt chuột tọa độ thời điểm kiện gây Sự kiện thường trở lại trạng thái số để xem kiện thành công hay không Ví dụ, kiện "onValidate" trở True hình thức xác nhận thơng qua hay sai ngược lại Một cách khác trả chuỗi cấu trúc có chứa thơng báo lỗi (s) có vấn đề phát Khơng phải tất kiện cần phải trả lại kết Một cách tiếp cận sử dụng mảng đầu vào mảng đầu Như vậy, mã trả về, thơng báo lỗi, đăng nhập trả lại mà không tạo biến (Tên dành riêng cho nó) Khơng có nguy phá hoại mục có mảng, đầu vào không tái sử dụng Sự kiện thường xuyên tiếp xúc với sở liệu Ví dụ, giao diện kiện thay đổi màu sắc văn hộp nhập liệu không liên quan đến kiện Sự kiện thường coi thủ tục mô-đun nhỏ Nổi bật chức cho phép nhiều kiện, số hệ thống khơng cho phép nhiều thói quen kiện, trừ gọi thư viện chia sẻ.Ví dụ: ngôn ngữ Pascal cho phép chức đơn giản hoá việc lồng phạm vi vấn đề Một số quy tắc thông thường cần phải thiết lập kiện ưu tiên nhiều kiện kích hoạt đồng thời Khi tất kiện chưa xử lý, đầu vào sau lại tao ra, kết kiện tiếp tục Các kiện thường phép kích hoạt kiện khác thơng qua API Một phép cẩn thận để tránh vịng lặp vơ hạn Ví dụ: Sử dụng hệ thống giao diện sau: Đầu vào o Bàn phím o Tọa độ chuột o Dòng số lượng o Các kiện trước truy cập Đầu o Sự kiện thành công hay thất bại (như kết xác thực) o Thông báo lỗi (s) (có thể sử dụng thay báo trạng thái) o Các loại kiện cụ thể đối tượng gây (danh từ) thuộc tính o Login thông tin gỡ lỗi (được viết để đăng nhập tùy chọn) Ví dụ: Ví dụ 1: ví dụ tạo cửa sổ với nút.Ví dụ xử lí nhấp nhuột kiện cửa sổ thay dổi Code: import java.awt *; import java.awt.event *; import javax.swing *; public class EventTest { public static void main (String [] args) { JFrame frame = new EventFrame (); frame.setVisible (true); } } // Class EventFrame extends JFrame { public EventFrame () { setTitle ("Demo"); setSize (300.100); addWindowListener (new MainWindowListener ()); Container contenido = getContentPane (); contenido.add (mới ButtonPanel ()); } } // class MainWindowListener extends WindowAdapter { public void windowClosing (WindowEvent e) { System.exit (0); } } // class ButtonPanel extends JPanel implements ActionListener { private JButton redButton; private JButton greenButton; private JButton blueButton; public ButtonPanel () { redButton = new JButton ("Red"); greenButton = new JButton ("Green"); blueButton = new JButton ("Blue"); this.add (redButton); this.add (greenButton); this.add (blueButton); redButton.addActionListener (this); greenButton.addActionListener (this); blueButton.addActionListener (this); } public void actionPerformed (ActionEvent event) { Obiect source = event.getSource (); Color color = getBackground (); if (source == redButton) { color = Color.RED; } Else if (source == greenButton) { color = Color.GREEN; } Else if (source == blueButton) { color = Color.BLUE; } setBackground (color); repaint (); } } Nếu bạn quan sát mã, ButtonPanel lớp quản lý nút có thực giao diện ActionListener sử dụng để quản lý kiện click vào nút Cách đăng ký kiện là: redButton.addActionListener (this); greenButton.addActionListener (this); blueButton.addActionListener (this); Trong trường hợp ActionPerformed phương pháp sử dụng tất nút public void actionPerformed (ActionEvent vent) { Object source = event.getSource (); Color color = getBackground (); if (source == redButton) { color = Color.RED; } Else if (source == greenButton) { color = Color.GREEN; } Else if (source == blueButton) { color = Color.BLUE; } setBackground (color); repaint (); } ListSelectionEvent FocusEvent keyEvent ItemListener FocusListener ItemStateChanged(ItemEven e) focusGained (FocusEvent e) KeyListener focuslost (FocusEvent e) keyPressed (KeyEvent e) keyReleased (KeyEvent e) MouseEvent keyType(KeyEvent e) mousePressed (MouseEvent e) MouseListener mouseReleased (MouseEvent e) mouseClicked (MouseEvent e) MouseMonitonListener mouseMoved (MouseEvent e) windowEvent mouseDragged (MouseEvent e) Windowclosed(WindownEvent) WindowListener Windowopened(WindownEvent) Các lớp xử lý kiện EventObject AWTEvent ActionEvent ContainerEvent AdjustmentEvent FocusEvent ComponentEvent InputEvent ItemEvent PaintEvent TextEvent WindowEvent MouseEvent KeyEvent ListSelectionEvent Hình 1: Các lớp xử lý kiện Các lớp AWTEvent chia thành hai nhóm: Các lớp mơ tả ngữ nghĩa kiện, Các lớp kiện mức thấp Ý nghĩa lớp a) ActionEvent : Sự kiện phát sinh hoạt thực thành phần GUI Các thành phần gây kiện hành động bao gồm: JButton - nút button kích hoạt JList - mục danh sách kích hoạt đúp JmenuItem, JcheckBoxMenu, JradioMenu - mục thực đơn chọn JTextField - gõ phím ENTER trường văn (text) b) AdjustmentEvent : Sự kiện xẩy ta điều chỉnh (adjustment) giá trị cuốn(JScollBar) Scrollbar - thực lần chỉnh trượt Scrollbar Lớp có phương thức int getValue(): cho lại giá trị thời xác định lần chỉnh sau c) ItemEvent : Các thành phần GUI gây kiện mục gồm có: JCheckbox - trạng thái hộp kiểm tra Checkbox thay đổi CheckboxMenuItem - trạng thái hộp kiểm tra Checkbox ứng với mục thực đơn thay đổi JradioButton - trạng thái hộp chọn (Option) thay đổi JList - mục danh sách chọn bị loại bỏ chọn JCompoBox - mục danh sách chọn bị loại bỏ chọn Lớp ItemEvent có phương thức Object getItem(): Cho lại đối tượng chọn hay vừa bị bỏ chọn d) TextEvent Các thành phần GUI gây kiện text gồm có: TextArea - kết thúc nhấn nút ENTER, TextField - kết thúc nhấn nút ENTER e) ComponentEvent Sự kiện xuất thành phần bị ẩn đi/hiện thay thay đổi lại kích thước Lớp ComponentEvent có phương thức: Component getComponent() Cho lại đối tượng tham chiếu kiểu Component f) ContainerEvent Sự kiện xuất thành phần bổ sung hay bị loại bỏ khỏi vật chứa (Container) g) FocusEvent Sự kiện loại xuất thành phần nhận focus h) KeyEvent Lớp KeyEvent lớp lớp trừu tượng InputEvent sử dụng để xử lý kiện liên quan đến phím bàn phím Lớp có phương thức: int getKeyCode() Đối với kiện KEY_PRESSED KEY_RELEASED, hàm sử dụng để nhận lại giá trị nguyên tương ứng với mã phím bàn phím char getKeyChar() Đối với kiện KEY_PRESSED, hàm sử dụng để nhận lại giá trị nguyên, mã Unicode tương ứng với ký tự bàn phím i) MouseEvent : Lớp MouseEvent lớp lớp trừu tượng InputEvent sử dụng để xử lý tín hiệu chuột Lớp có phương thức: int getX() int getY() Point getPoint() Các hàm sử dụng để nhận lại tọa độ x, y vị trí liên quan đến kiện chuột gây void translatePoint(int dx, int dy) Hàm translate() sử dụng để chuyển tọa độ kiện chuột gây đến (dx, dy) int getClickCount() Hàm getClickCount() đếm số lần kích chuột j) PaintEvent: Sự kiện xuất thành phần vẽ lại, thực tế kiện xẩy phương thức paint() / update() gọi đến k) WindowEvent : Sự kiện loại xuất thao tác với Window, chẳng hạn như: đóng, phóng to, thu nhỏ cửa sổ Lớp có phương thức: Window getWindow() Hàm cho lại đối tượng lớp Window ứng với kiện liên quan đếnWindow xảy III XỬ LÍ SỰ KIỆN Xử lý kiện chuột Sự kiện chuột tạo người dùng sử dụng chuột (thiết bị vào) để tương tác(rê chuột, di chuyển, nhấn, thả, nhắp) với thành phần Các kiện chuột thực thi trỏ chuột vào vùng hình người dùng kích vào nút Để quản lý xử lý kiện liên quan đến thiết bị chuột, Java cung cấp hai intefaces lắng nghe (bộ lắng nghe kiện chuột) MouseListener MouseMotionListener Những kiện chuột “bẫy” cho component GUI mà dẫn xuất từ java.awt.component Các phương thức interface MouseListener: Method mouseClicked(MouseEvent) mouseEntered(MouseEvent) mouseExited(MouseEvent) mousePressed(MouseEvent) mouseReleased(MouseEvent) Purpose Được gọi nút chuột nhấn nhả component mà không di chuyển chuột Được gọi trỏ chuột vào đường biên component Được gọi trỏ chuột khỏi đường biên component Được gọi nút chuột nhấn trỏ chuột component Được gọi nút chuột nhả sa kéo rê Các phương thức lớp MouseEvent Method int getClickCount() Int getX() Int getY() Point getPoint() Int getXOnScreen() Int getYOnScreen() Int getLocationOnScreen() Int getButton() Purpose Trả số lần nhấn chuột Trả tọa độ X, Y chuột xảy kiện Trả tọa độ tuyệt đối kiện Những kiện liên quan đến hệ thống tọa độ ảo cho mơi trường đa hình Cách khác, tọa độ liên quan đến hệ thống tọa độ liên quan đến cấu hình đồ họa Trả nút chuột chuyển trạng Boolean isPopupTrigger() String getMousedModifiersText(int) thái.Một trả : NOBUTTON, BUTTON1, BUTTON2, or BUTTON3 Kiểm tra kiện có làm xuất popup menu không(Khi bạn bấm chuột phải tên tập tin hay vùng trắng cửa sổ chương trình đó, menu bung ra, người ta gọi pop-up menu.) Trả miêu tả chuỗi sửa đổi nút chuột kiện hoạt động suốt kiện “Shift”, “Ctrl+Shift” Các phương thức interface MouseMotionListener: Method mouseDragged(MouseEvent ) Purpose Phương thức gọi người dùng nhấn nút chuột kéo component mouseMoved(MouseEvent): Phương thức gọi di chuyển chuột component Mỗi phương thức xử lý kiện chuột có tham số MouseEvent chứa thơng tin kiện chuột phát sinh chẳng hạn như: tọa độ x, y nơi kiện chuột xảy Những phương thức tương ứng interfaces tự động gọi chuột tương tác với component Để biết người dùng nhấn nút chuột nào, dùng phuơng thức, số lớp InputEvent (là lớp cha lớp MouseEvent) ... CHUNG VỀ LẬP TRÌNH BẮT SỰ KIỆN .4 Một số khái niệm .4 1.1 Sự kiện (Event) 2.Đơn vị xử lý kiện (event handler or event listener ) Lập trình bắt kiện (Event-Driven Programming). .. trình" ) 2 Lập trình bắt kiện (Event-Driven Programming) Lập trình bắt kiện cách linh hoạt phép chương trình bạn đáp ứng với nhiều yếu tố đầu vào khác kiện a Lập trình hướng thủ tục (Procedural programming). .. programming): Mã lệnh thực vào lúc kích hoạt kiện Nhiệm vụ lập trình để viết mã, thực xuất kiện tự động, loại lập trình gọi lập trình bắt kiện Trong chương trình này, lập trình viên xác định làm để tạo đối