2011-02-03 33 views
9

Tôi có một ý tưởng về cách sử dụng người nghe hành động và thực hiện chúng nhưng tôi đã tự hỏi nếu có ai có thể cho tôi biết làm thế nào để họ lắng nghe các sự kiện? Có cơ chế bỏ phiếu nào không?ActionListener hoạt động như thế nào?

Trả lời

13

Người nghe hành động đăng ký sự kiện bằng cách sử dụng Observer pattern và họ được thông báo, bởi vòng lặp sự kiện chính của bất kỳ sự kiện nào họ đã đăng ký. Vì vậy, không, nó không phải là một cơ chế bỏ phiếu (kéo), nhưng ngược lại - một cuộc gọi lại (push). Đây là một ví dụ về 'không gọi cho chúng tôi, chúng tôi sẽ gọi cho bạn' lập trình. Bởi vì mọi thứ trong mã của bạn chạy ra khỏi một luồng đơn (vòng lặp sự kiện), bạn không phải lo lắng về việc đồng bộ hóa giữa các sự kiện khác nhau - vì vậy mã của bạn là an toàn.

1

Có một vòng lặp sự kiện được triển khai thành lõi của AWT. Nó nhận tất cả các sự kiện và gửi chúng đến người nghe thích hợp.

1

Các hướng dẫn giải thích cách họ làm việc khá tốt: http://download.oracle.com/javase/tutorial/uiswing/events/actionlistener.html

Tôi nghĩ rằng việc thực hiện giao diện người dùng của JComponent sẽ cháy (gọi) tất cả các sự kiện đăng ký khi người dùng tương tác với nó (tôi nghĩ).

Ví dụ: khi người dùng nhấp vào JButton, nút (hoặc ui hoặc một số trình xử lý nội bộ khác) sẽ tra cứu tất cả đăng ký ActionListeners và gọi các phương thức actionPerformed(...) của họ.

Các vấn đề liên quan