2011-12-29 34 views
7

Câu hỏi này phát sinh khi một người dùng ẩn danh downvoted câu trả lời của tôi liên quan đến KeyListeners và đề nghị sử dụng Key Bindings để thay thế. Người dùng ẩn danh này thông báo với tôi rằng giao diện KeyListener là một giải pháp AWT cũ và không nên được sử dụng.So sánh chức năng giữa KeyListeners và Key Bindings

Tuy nhiên, tôi không biết mình có nên tin tưởng hoàn toàn thông tin đó hay không. Tôi đã nghiên cứu cả trên các trang web khác nhau, bao gồm oracle, và không tìm thấy gì liên quan đến chức năng của KeyListeners hoặc Key Bindings. Tôi nhận thức được thực tế là cả hai thực hiện các nhiệm vụ tương tự, nhưng tôi không chắc chắn chính xác những gì diễn ra "đằng sau hậu trường", vì vậy để nói.

Tôi đang nghiêng về việc sử dụng các ràng buộc chính trong các dự án trong tương lai, đơn giản là vì tôi đã nghiên cứu cho thấy giao diện KeyListener yêu cầu thành phần được đề cập tập trung trong khi Key Bindings thì không. Nhưng, tôi bối rối. Tại sao cái này rất? Các ràng buộc khóa được kích hoạt khác với KeyListeners như thế nào?

P.S. Tôi khá chắc chắn đây là sự hiếm có, nhưng có một số trường hợp sử dụng KeyListeners thích hợp hơn không?

Trả lời

10

How to Use Key Bindings giải thích các khái niệm cơ bản.

Các ràng buộc được sử dụng để ánh xạ các Hành động cụ thể đến một KeyStroke cụ thể.

KeyListener là phương sách cuối cùng khi tất cả các tóm tắt khác không hoạt động. Có lẽ bạn sẽ sử dụng một KeyListener khi bạn đang nghe BẤT CỨ KeyStroke. Vì vậy, sẽ không thực tế nếu tạo ra 26 ràng buộc cho tất cả các chữ cái trong bảng chữ cái.

Nhưng một lần nữa trong nhiều trường hợp, có API tốt hơn để sử dụng. Ví dụ, thay vì lắng nghe KeyEvents trên một trường văn bản, bạn sẽ sử dụng một DocumentListener để lắng nghe những thay đổi đối với Document.

+0

Cảm ơn bạn! Điều đó đã giúp rất nhiều. Tôi đã đọc liên kết trước đây, nhưng không triệt để như tôi vừa làm. Tôi không biết. Tôi hoàn toàn bỏ qua phần giải thích cách Key Bindings hoạt động. >: O – fireshadow52

0

tôi sẽ đề nghị bạn sử dụng keybindings vì nhiều lý do:

  • Nó thực sự hoạt động nhanh hơn so với một KeyListener.
  • KeyBinding được phát triển hơn và có nhiều hơn nữa để cung cấp khả năng.
  • Mặc dù bạn sẽ cần phải sử dụng bộ hẹn giờ Đu, điều đó tốt hơn cho trò chơi.
  • Có thể đặt và có thể chia sẻ được không.

Có thể khó sử dụng nó sang một KeyListener nhưng KeyListener sẽ không thể xử lý nhiều lần nhấn phím trong trò chơi.

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