2010-05-31 30 views
6

Tôi đang viết một ứng dụng Java Swing cần phải có cửa sổ nhận các sự kiện di chuyển chuột khi ứng dụng không được kích hoạt - nghĩ về nó như một thanh công cụ luôn luôn trên toàn cầu hoạt hình khi chuột di chuột qua nó.Mac OSX Java: Nhận các sự kiện chuột khi không được kích hoạt

Từ nghiên cứu của tôi cho đến nay, tôi đã thấy rằng Java Java JRE chỉ chuyển các sự kiện khi ứng dụng đã tập trung.

Dường như không phải là giới hạn của hệ điều hành, vì vậy tôi đã hy vọng rằng có thuộc tính hệ thống, thuộc tính gói ứng dụng hoặc cuộc gọi hệ thống cho phép xử lý sự kiện không kích hoạt. Không có điều đó, một số phương pháp thu thập các sự kiện di chuyển chuột trên toàn cầu và chuyển chúng vào ứng dụng Java.

Thanks cho bất kỳ lời đề nghị ...

Edit: Một câu hỏi nữa: Khi các sự kiện chuột di chuyển đã bị bắt, làm thế nào để bạn cho chúng ăn vào Swing để họ được đối xử như nhau được như các sự kiện chuột OS mẹ đẻ - bằng cách tìm thành phần dưới con chuột và gửi một MouseEvent đến nó ...

Trả lời

2

Điều này là không thể với Java thuần túy.
Bạn sẽ cần JNI và để viết một người biết chìa khóa toàn cầu (hoặc keyboard hook) bằng ngôn ngữ C++ hoặc một ngôn ngữ khác.

Dưới đây là một số chủ đề về toàn cầu KeyListener:

Về chủ đề cuối cùng: this là một giải pháp đưa ra cho OSX.

+0

Cảm ơn, tôi sợ rằng đây là trường hợp. Bất kỳ gợi ý nào về việc đưa các sự kiện đã chụp trở lại ứng dụng Java, do đó Swing sẽ xử lý chúng như thể chúng đến từ hệ điều hành (bằng cách tìm thành phần bên dưới chuột và gửi một MouseEvent tới nó). – CuriousPanda

+0

Xin lỗi, nhưng tôi không có Mac OSX, vì vậy tôi không thể dùng thử. Tôi chỉ google một chút, với sự hiểu biết về các thuật ngữ 'JNI' và' Keyboard hook'. –

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