2012-01-20 71 views
8

Tôi đã làm việc trên một trò chơi 2d trong java gần đây, và hiện đang cố gắng để có được hệ thống xử lý sự kiện làm việc đúng. Tôi đã cố gắng để có được một cú click chuột để bắt đầu một hình ảnh động, và nó làm việc cho đến khi tôi cố gắng di chuyển chuột trong khi nhấp vào. Tại thời điểm này không có gì xảy ra cả. Tôi đang sử dụng cả hai lớp mouselistener và mousemotionlistener, và vấn đề vẫn còn tồn tại. Đây là mã từ Chính:Sự kiện chuột Java bị bỏ qua khi di chuyển chuột?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

Nó gọi lớp hoạt hình để phát một bộ hình ảnh một lần và dừng. Trình làm hoạt ảnh hoạt động hoàn hảo trước khi tôi đưa vào các sự kiện chuột. Tôi không thể tìm ra lý do tại sao nó sẽ không hoạt động trong khi di chuyển chuột nếu không có hành động cụ thể để thực hiện trong quá trình di chuyển chuột đó. (Nếu có giải pháp rõ ràng, tôi xin lỗi, tôi đã bắt đầu java cách đây không lâu.)

Trả lời

6

Trong Java, nhấp chuột chỉ đăng ký nếu con chuột được nhấn và nhả chuột mà không cần di chuyển chuột. Điều này là khó khăn cho hầu hết người dùng để thực hiện, do đó, hầu hết các yếu tố giao diện người dùng (như nút) phản ứng với báo chí chuột và phát hành các sự kiện và bỏ qua "nhấp chuột".

Đối với một nút, tuy nhiên, một tùy chọn tốt hơn là thêm ActionListener vào đó. Sau đó, nút chính nó sẽ lắng nghe các sự kiện chuột và quyết định khi nó đã được nhấp.

+0

Cảm ơn! Mẹo về cách nhấp vào sẽ tiết kiệm cho tôi một số thất vọng sau này. – Ryan

+2

@trashgod: À, thực ra nút 'ButtonModel' chỉ theo dõi trạng thái - đó là nút' ButtonUI' lắng nghe các sự kiện chuột và cập nhật mô hình. –

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