1. Trang chủ
  2. » Thể loại khác

BÁO CÁO BÀI TẬP LỚN MÔN LẬP TRÌNH JAVA Đề tài: Tìm hiểu về lập trình bắt sự kiện (Event-Driven Programming) trong Java

29 3 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 470,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Cáctương tác người dùng với các đối tượng giao diện được gọi là các sự kiện vàcác thông báo sự kiện được đưa vào chương trình mà người dùng đang tươngtác với của hệ điều hành Windows.. M

Trang 1

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

GV hướng dẫn : Ths Ngô Công Thắng

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 3

I GIỚI THIỆU CHUNG VỀ LẬP TRÌNH BẮT SỰ KIỆN 4

1 Một số khái niệm 4

1.1 Sự kiện (Event) 4

1 2.Đơn vị xử lý sự kiện (event handler or event listener ) 4

2 Lập trình bắt sự kiện (Event-Driven Programming) 6

3 Ví dụ: 8

II MÔ HÌNH XỬ LÍ SỰ KIỆN 12

1 Giới thiệu chung: 12

2 Mô hình ủy thác sự kiện 12

3 Các lớp xử lý các sự kiện 14

III XỬ LÍ SỰ KIỆN 17

1 Xử lý sự kiện chuột 17

2 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

Trang 3

LỜI MỞ ĐẦU

Các chương trình dựa trên Windows có một giao diện người dùng đồ họa(GUI), và người dùng có thể tương tác với chương trình thông qua nó Giaodiện này bao gồm xây dựng trong nhiều đối tượng (giống như hộp văn bản,công cụ, biểu tượng …vv) Người dùng tương tác với các đối tượng GUI, hoặcthông qua cú nhấp chuột hoặc thông qua cách bấm phím trên bàn phím Cáctương tác người dùng với các đối tượng giao diện được gọi là các sự kiện vàcác thông báo sự kiện được đưa vào chương trình (mà người dùng đang tươngtác với) của hệ điều hành Windows

Với mong muốn tìm hiểu sâu hơn về quá trình bắt và xử lí các sự kiệnngười dùng trong Java nhóm chúng tôi quyết định thực hiện đề tài này Bởi vốnkiến thức còn hạn hẹp cùng với một thời gian rất ngắn, nhóm chúng tôi khôngthể tránh được nhiều thiếu sót, rất mong các bạn và thầy giáo đóng góp thêm ýkiến để đề tài của nhóm chúng tôi hoàn thiện hơn

Xin chân thành cảm ơn!

Nhóm sinh viên!

Trang 4

I GIỚI THIỆU CHUNG VỀ LẬP TRÌNH BẮT SỰ KIỆN

( Introduction About Event-Driven Programming)

1 Một số khái niệm

1.1 Sự kiện (Event)

Sự kiện có thể được định nghĩa là một loai tín hiệu báo cho chương trình

có điều gì đó đã xảy ra…Sự kiện được sinh ra bởi các hành động của người sửdụng(Ví dụ: di chuột,kích phím chuột,ấn phím) hoặc bởi hệ điều hành(Ví dụ:Time)

Sự kiện là những hành động được thực hiện bởi người sử dụng trongquá trình sử dụng ứng dụng Nếu người dùng nhấp chuột vào một nút bất kỳđối tượng sau đó các sự kiện Click xảy ra Nếu người dùng di chuyển chuột sau

đó sự kiện di chuyển chuột xảy ra

Sự kiện là đối tượng mô tả tình trạng thay đổi ở nguồn, nó có thể đượctạo ra do tác động của người dùng tới các thành phần của giao diện đồ họa Mộtvài hoạt động có thể tạo ra sự kiện như: ấn nút, nhập ký tự thông qua bàn phím,chọn một mục trong danh sách, nhấn chuột và nhiều điều khiển từ ứng dụngkhác

Sự kiện có thể xảy ra không trực tiếp từ tác động người dung tới giaodiện Ví du: Sự kiện có thể xảy ra do hệ điều hành (Timer), do bộ đếm vượt quágiá trị, do phần cứng hoặc phần mềm bị hư, hoặc khi kết thúc một hoạt động

1 2.Đơn vị xử lý sự kiện (event handler or event listener )

• Là một phương thức (hàm) nhận đầu vào từ một thiết bị như chuột haybàn phím và thực hiện một việc nào đó để phản ứng lại với một sự kiện xảy

ra trên thiết bị đó

• Hàm xử lý sự kiện này sẽ được tự động gọi khi sự kiện tương ứng phátsinh

Ví dụ: Một đơn vị xử lý sự kiện có tên “jButton18MousePressed”:

private void jButton18MousePressed(MouseEvent evt)

{

String str=jTextField1.getText()+jButton18.getText();

jTextField1.setText(str) ;

}

Trang 5

a)Một xử lý sự kiện tầm thường

Bởi vì để kiểm tra các mã cho các sự kiện và các vòng lặp chính khôngphụ thuộc vào ứng dụng, và mong muốn người dùng chỉ cung cấp mã cho các

xử lý sự kiện Trong ví dụ đơn giản này có một xử lý sự kiện được gọi làOnKeyEnter () bao gồm một đối số với một chuỗi ký tự, tương ứng với những

gì mà người dùng đánh máy trước khi nhấn phím ENTER

b)Xử lý ngoại lệ

Trong một số ngôn ngữ lập trình , mặc dù một chương trình chính nókhông được chủ yếu là hướng sự kiện, sự kiện bất thường nào đó như một phầncứng , lỗi tràn hoặc kiểm tra chương trình có thể xảy ra mà cần được xử lý

c)Tạo xử lý sự kiện

Bước đầu tiên trong việc phát triển một chương trình hướng sự kiện làviết một loạt các chương trình con , hoặc các phương pháp, được gọi là sự kiệnthường trình xử lý Những thói quen xử lý các sự kiện mà các chương trìnhchính sẽ trả lời Ví dụ, một nút trái chuột vào một nút lệnh trong một giao diệnchương trình có thể kích hoạt một thói quen đó sẽ mở ra một cửa sổ, lưu dữ liệuvào một cơ sở dữ liệu hoặc thoát khỏi ứng dụng

Bước thứ hai là để xử lý sự kiện gắn với các sự kiện để các chức năngđược gọi khi sự kiện diễn ra Kết hợp với nhấp đúp chuột vào một nút, và tạo ramột trình biên tập xử lý sự kiện (trống) liên kết với người sử dụng nhấn vào nút

và mở ra một cửa sổ văn bản để bạn có thể chỉnh sửa các xử lý sự kiện

Bước thứ ba trong việc phát triển một chương trình hướng sự kiện là viếtcác vòng lặp chính Đây là một chức năng để kiểm tra sự xuất hiện của các sựkiện, và sau đó gọi là xử lý sự kiện phù hợp để xử lý nó Hầu hết các môitrường lập trình hướng sự kiện đã được cung cấp vòng lặp chính, vì vậy nókhông cần phải được quy định cụ thể của các lập trình ứng dụng RPG , mộtngôn ngữ lập trình đầu từ IBM, mà năm 1960 đã được thiết kế ý tưởng tương tựnhư lập trình hướng sự kiện đã nói ở trên, cung cấp tích hợp trong chính I / Ovòng lặp (được gọi là "chu kỳ chương trình")

Trang 6

2 Lập trình bắt sự kiện (Event-Driven Programming)

Lập trình bắt sự kiện là một cách linh hoạt để cho phép các chương trìnhcủa bạn đáp ứng với nhiều yếu tố đầu vào khác nhau hoặc các sự kiện

a Lập trình hướng thủ tục (Procedural programming) : Chương trình được

thực hiện theo thứ tự thủ tục

Kĩ thuật lập trình này dựa trên quan niệm phân tích một chức năng xử líthông tin thành các chức năng nhỏ hơn, làm mịn dần quá trình này cho tới khixây dựng được các đơn thể Chương trình chỉ dùng các cấu trúc điều khiển cơbản: tuần tự, rẽ nhánh, lặp và ra khỏi lặp Lập trình hướng thủ tục sử dụng cáchtiếp cận từ trên xuống, tức là phân tách từ toàn thể đến bộ phận, rồi lại từ bộphận đến bộ phận nhỏ hơn Các đơn thể trong một chương trình có cấu trúc cótính độc lập tương đối cao, chỉ giao tiếp với nhau thông qua giao diện đã xáclập trước, do đó kỹ thuật lập trình này có một số ưu điểm: dễ phân công nhiềungười cùng lập một chương trình, dễ thử và hiệu chỉnh chương trình

b Lập trình bắt sự kiện (event-driven programming): Mã lệnh được

thực hiện vào lúc kích hoạt sự kiện

Nhiệm vụ của lập trình là để viết mã, được thực hiện về sự xuất hiện củacác sự kiện tự động, và loại lập trình này được gọi là lập trình bắt sự kiện.Trong chương trình này, lập trình viên không phải xác định làm thế nào để tạo

ra các đối tượng này, làm thế nào để đặt chúng trên màn hình và làm thế nào đểthay đổi thuộc tính của nó ,các lập trình viên chỉ cần tạo ra bằng cách sử dụnggiao diện đồ họa tích hợp trong các đối tượng / kiểm soát và ghi mã mà phảnứng với mỗi sự kiện xảy ra bởi các tương tác người dùng

Nói chung lập trình bắt sự kiện có nghĩa là làm cho một số hành độngthực hiện (thông qua một số chương trình / code) về sự xuất hiện của các sựkiện

c)Các tính năng điển hình của các sự kiện trong lập trình bắt sự kiện

Các sự kiện này thường được tham chiếu, hoặc đặt tên dựa trên một đốitượng và loại hành động đã kích hoạt sự kiện Ví dụ, "icon3_click" hoặc

"icon3 - onClick" Vì vậy, chúng thường có ít nhất hai "chìa khóa"

Thường thì có một đối tượng, tham số thiết lập, hoặc từ điển cấu trúcmảng đó là thông qua vào như một tham số có thể được sử dụng để tìm hiểuthêm về môi trường đã kích hoạt sự kiện Ví dụ, nó có thể chứa các phím tắthoặc chuột tọa độ tại thời điểm sự kiện gây ra

Trang 7

Sự kiện thường trở lại trạng thái như là một chỉ số để xem các sự kiện đãthành công hay không Ví dụ, một sự kiện "onValidate" có thể trở về Truenếu một hình thức xác nhận thông qua hay sai nếu ngược lại Một cách khác

là trả về một chuỗi hoặc cấu trúc có chứa các thông báo lỗi (s) nếu có một vấn

đề phát hiện Không phải tất cả các sự kiện cần phải trả lại kết quả Một cáchtiếp cận là sử dụng cùng một mảng đầu vào là mảng đầu ra Như vậy, mã trả

về, thông báo lỗi, và đăng nhập có thể được trả lại mà không tạo ra biến mới.(Tên chính được dành riêng cho nó) Không có nguy cơ phá hoại các mụchiện có trong mảng, vì các đầu vào không được tái sử dụng

Sự kiện có thể thường xuyên tiếp xúc với cơ sở dữ liệu Ví dụ, trong mộtgiao diện một sự kiện có thể thay đổi màu sắc hoặc văn bản của một hộp nhậpliệu không liên quan đến sự kiện này

Sự kiện thường được coi là thủ tục mô-đun nhỏ Nổi bật nhất là chức năngnày có thể cho phép nhiều trong các sự kiện, nhưng một số hệ thống không chophép nhiều thói quen mỗi sự kiện, trừ khi gọi thư viện chia sẻ.Ví dụ: một ngônngữ như Pascal cho phép chức năng đơn giản hoá việc lồng nhau phạm vi vấn

đề

Một số quy tắc thông thường cần phải được thiết lập về những sự kiện được

ưu tiên nếu nhiều sự kiện được kích hoạt đồng thời

Khi tất cả các sự kiện chưa được xử lý, các đầu vào sau đó lại được tao ra,kết quả là sự kiện có thể tiếp tục

Các sự kiện này thường được phép kích hoạt sự kiện khác thông qua mộtAPI 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 như sau:

o Sự kiện thành công hay thất bại (như kết quả xác thực)

o Thông báo lỗi (s) (có thể được sử dụng thay vì chỉ báo trạng thái)

o Các loại sự kiện cụ thể hoặc đối tượng gây ra (danh từ) thuộctính

o Login hoặc thông tin gỡ lỗi (được viết để đăng nhập tùy chọn)

Trang 8

public class EventTest {

public static void main (String [] args) {

JFrame frame = new EventFrame ();

addWindowListener (new MainWindowListener ());

Container contenido = getContentPane ();

contenido.add (mới ButtonPanel ());

Trang 9

private JButton redButton;

private JButton greenButton;

private JButton blueButton;

public ButtonPanel ()

{

redButton = new JButton ("Red");

greenButton = new JButton ("Green");

blueButton = new JButton ("Blue");

Obiect source = event.getSource ();

Color color = getBackground ();

if (source == redButton) {

color = Color.RED;

} Else if (source == greenButton) {

color = Color.GREEN;

} Else if (source == blueButton){

Trang 10

color = Color.BLUE;

} setBackground (color);

Object source = event.getSource ();

Color color = getBackground ();

Trang 11

Ví dụ 2: Một lớp duy nhất thực hiện 2 giao diện:

Ví dụ này tạo một cửa sổ mới với một nút bấm và một textbox Ví dụ xử lý sựkiện click và quản lý truy cập nội bộ để chỉ số lượng nhấp chuột

private int numClicks = 0;

public static void main (String [] args)

Trang 12

{

dispose ();

System.exit (0);

}

public void windowOpened (WindowEvent e) {}

public void windowActivated (WindowEvent e) {}

public void windowIconified (WindowEvent e) {}

public void windowDeiconified (WindowEvent e) {}

public void windowDeactivated (WindowEvent e) {}

public void windowClosed (WindowEvent e) {}

}

Trong ví dụ này, có một lớp duy nhất thực hiện 2 giao diện:WindowListener và ActionListener ActionListener có một phương pháp độcđáo: ActionPerformed nhưng WindowListener có vài phương thức Khi bạn sửdụng giao diện với Java, nó là cần thiết để thực hiện tất cả các phương pháp.Trong trường hợp này, một số phương pháp được khai báo nhưng không có bất

kỳ mã bên trong

II MÔ HÌNH XỬ LÍ SỰ KIỆN

1 Giới thiệu chung:

Những sự kiện được phát sinh khi người dùng tương tác với giao diện chương trình (GUI) Những tương tác thường gặp như: di chuyển, nhấn chuột, nhấn một nút nhấn, chọn một MenuItem trong hệ thống thực đơn, nhập dữ liệu trong một ô văn bản, đóng cửa sổ ứng dụng, … 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à JFC Đố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

2 Mô hình ủy thác sự kiện

a Định nghĩa: Mô hình ủy thác sự kiện định nghĩa các cơ chế chuẩn và cố định để tạo và xử lý sự kiện Ý tưởng này rất đơn giản, nguồn tạo và gởi sự kiện tới một hay nhiều đích nhận, đích sẽ chờ đến khi nhận được sự kiện, nó sẽ

xử lý sự kiện và trả về giá trị Trong mô hình này, đích phải đăng ký với nguồn

Trang 13

để nhận các thông báo về sự kiện, điều này cung cấp nhiều lợi điểm: các thông báo chỉ gửi đến các đích nghe cần nhận nó

b Ưu điểm mô hình này là phần chương trình xử lý sự kiện hoàn toàn tách biệt với giao diện người dùng nơi đã phát sinh ra các sự kiện Giao diện người dùng có thể ủy thác việc xử lý sự kiện cho các phần mã lệnh riêng rẽ

• Ta nhờ bác sĩ chữa bệnh (ủy thác xử lý sự kiện)

• Bác sĩ chờ (listen) ta đưa ra triệu chứng bệnh (đối tượng event) rồi dựa vào trạng thái của bệnh (đối tượng event) để xử lý phù hợp

• Có thể ta mắc nhiều bệnh có thể ủy thác chữa bệnh cho nhiều bác sĩ, mỗi bác sĩ một loại bệnh

• Một bác sĩ chữa bệnh như thế nào tùy thuộc vào quyết định của bác sĩ đó dựa trên tình hình thực tế của dược phẩm

Source Object

Trigger an event

Listener Object Register a listener object

EventObject

Event Handler

Notify listener Generate

an event User

action

Trang 14

3 Interface lắng nghe của gói java.awt.event

- Khi người dùng tác động lên thành phần giao tiếp (nhấn chuột, nhấn phím…)

sẽ sinh ra một sự kiện, Java sẽ gửi sự kiện này cho đối tượng lắng nghe sự kiện,đối tượng lắng nghe sự kiện sẽ gọi một phương thức đặc biệt để xử lý sự kiện

- Mỗi thành phần giao tiếp (đối tượng nguồn) cần phải đăng ký các đối tượng lắng nghe

sự kiện (đối tượng đích) và trong mỗi đối tượng đích cần cài đặt phương thức xử lý sự kiện (đối tượng nguồn và đối tượng đích đôi khi chỉ là một)

NGUỒN

SỰ KIỆN ĐƯỢC TẠO RA

Nhấn nút Button Jbutton ActionEvent

Thay đổi văn bản của textfield JtextComponent TextEvent

Nhấn enter trên textfield JtextComponent TextEvent

Chọn mục của combobox JCombobox ItemEvent, ActionEvent Chọn các mục của list Jlist ListSelectionEvent

Chọn mục của menu JmenuItem ActionEvent

Dời focus đến hoặc đi khỏi thành phần Component FocusEvent

Nhấn hoặc thả phím trên thành phần Component KeyEvent

Di chuyển chuột trên thành phần Component MouseEvent

Mở, đóng, phóng to, thu nhỏ cửa sổ Window WindowEvent

- đối tượng lắng nghe sự kiện (đối tượng đích cần dùng giao diện phù hợp để cung cấp phương thức xử lý sự kiện tương ứng) Thông thường sự kiện tên là Xevent thì đối tượng đích phải dùng giao diện Xlistener và phương thức đăng

ký là addListener

Ví dụ: Khi nhấn nút button (đối tượng nguồn) sẽ sinh ra sự kiện ActionEvent,

sự kiện này được gửi cho đối tượng lắng nghe sự kiện(đối tượng đích) Đối tượng nguồn dùng phương thức addActionEvent để đăng ký đối tượng đích, đối tượng đích dùng giao diện ActionEvent cung cấp phương thức

actionPerforment (actionevent e) để xử lý sự kiện ActionEvent

SỰ KIỆN DÙNG GIAO DIỆN PHƯƠNG THỨC XỬ LÝ

ActionEvent Actionlistener actionPerformed(ActionEvent e) Textevent Textlistener TextValueChanged (TextEvent e) ItemEvent ItemListener ItemStateChanged(ItemEven e)

Trang 15

ListSelectionEvent ItemListener ItemStateChanged(ItemEven e) FocusEvent FocusListener focusGained (FocusEvent e)

focuslost (FocusEvent e) keyEvent KeyListener keyPressed (KeyEvent e)

keyReleased (KeyEvent e) keyType(KeyEvent e) MouseEvent MouseListener

MouseMonitonListener

mousePressed (MouseEvent e) mouseReleased (MouseEvent e) mouseClicked (MouseEvent e) mouseMoved (MouseEvent e) mouseDragged (MouseEvent e) windowEvent WindowListener Windowclosed(WindownEvent)

Windowopened(WindownEvent)

4 Các lớp xử lý các sự kiện

Hình 1: Các lớp xử lý sự kiện

 Các lớp con của AWTEvent được chia thành hai nhóm:

1 Các lớp mô tả về ngữ nghĩa của các sự kiện,

TextEvent ItemEvent

PaintEvent

ListSelectionEvent

Ngày đăng: 13/11/2022, 23:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w