Truyen2U.Top - Tên miền mới của Truyen2U.Net. Hãy sử dụng ứng dụng 1.1.1.1 để đọc truyện nhé!

Xử lý sự kiện trong Java

Màu nền
Font chữ
Font size
Chiều cao dòng

Xử lý sự kiện trong Java

Tất cả những gì mà bạn thực sự cần là một lô gic nào đó để sinh ra một “sự kiện” (mà thực sự không cần phải hoàn toàn là một lớp sự kiện) và một lô gic nào đó để lắng nghe sự kiện và sau đó trả lời một cách thích hợp. Ví dụ, giả sử rằng bất cứ khi nào một Person di chuyển, hệ thống của chúng ta tạo ra (hoặc kích hoạt) một MoveEvent, mà chúng ta có thể chọn xử lý hay không xử lý. Điều này sẽ yêu cầu một số thay đổi cho hệ thống của chúng ta. Chúng ta phải:

Tạo ra một lớp “ứng dụng” (application) để khởi chạy hệ thống của chúng ta và minh họa việc sử dụng lớp bên trong vô danh.

Tạo một MotionListener mà ứng dụng của chúng ta có thể thực hiện và sau đó xử lý các sự kiện trong trình lắng nghe (listener).

Thêm một List của các trình lắng nghe vào Adult.

Thêm một phương thức addMotionListener() vào Adult để đăng ký trình lắng nghe.

Thêm một phương thức fireMoveEvent() vào Adult để nó có thể báo cho trình lắng nghe khi nào thì xử lý sự kiện.

Thêm mã vào ứng dụng của chúng ta để tạo ra một Adult và tự đăng ký như là một trình xử lý

Tất cả điều này dễ hiểu. Đây là lớp Adult của chúng ta với các thứ mới thêm:

view sourceprint?

01

public class Adult extends Person {

02

protected Wallet wallet = new Wallet();

03

protected ArrayList listeners = new ArrayList();

04

public Adult() {

05

}

06

public void move() {

07

super.move(); fireMoveEvent();

08

}

09

...

10

public void addMotionListener(MotionListener aListener) {

11

listeners.add(aListener);

12

}

13

protected void fireMoveEvent() {

14

Iterator iterator = listeners.iterator();

15

while(iterator.hasNext()) {

16

MotionListener listener = (MotionListener) iterator.next();

17

listener.handleMove(this);

18

}

19

}

20

protected class Wallet {

21

...

22

}

23

}

Lưu ý rằng bây giờ chúng ta ghi đè move(), đầu tiên gọi move() trên Person, sau đó gọi fireMoveEvent() để báo cho trình lắng nghe trả lời. Chúng ta cũng đã thêm phương thức addMotionListener() để thêm một MotionListener vào một danh sách trình lắng nghe đang hoạt động. Đây là những gì giống với một MotionListener:

view sourceprint?

1

public interface MotionListener {

2

public void handleMove(Adult eventSource);

3

}

Tất cả những gì còn lại là tạo ra lớp ứng dụng của chúng ta:

view sourceprint?

01

public class CommunityApplication implements MotionListener {

02

public void handleMove(Adult eventSource) {

03

System.out.println("This Adult moved: n" + eventSource.toString());

04

}

05

public static void main(String[] args) {

06

CommunityApplication application = new CommunityApplication();

07

Adult anAdult = new Adult();

08

anAdult.addMotionListener(application);

09

anAdult.move();

10

}

11

}

Lớp này thực hiện giao diện MotionListener có nghĩa là nó triển khai thực hiện phương thức handleMove(). Tất cả những điều mà chúng ta làm ở đây là in một thông báo để minh họa những gì xảy ra khi một sự kiện được kích hoạt

Bạn đang đọc truyện trên: Truyen2U.Top