2010-05-31 5 views
6

मैं एक जावा स्विंग एप्लिकेशन लिख रहा हूं जिसमें एप्लिकेशन सक्रिय नहीं होने पर विंडो को माउस मूवमेंट ईवेंट प्राप्त करने की आवश्यकता होती है - इसके बारे में सोचें कि यह हमेशा वैश्विक ऑन-टॉप टूलबार की तरह है एनिमेट करता है जब माउस इसे पार करता है।मैक ओएसएक्स जावा: सक्रिय नहीं होने पर माउस ईवेंट प्राप्त करें

अब तक मेरे शोध से, मैंने देखा है कि मैक जावा जेआरई केवल एप्लिकेशन को फोकस करते समय ईवेंट पास करता है।

यह ओएस की सीमा प्रतीत नहीं होता है, इसलिए मैं उम्मीद कर रहा था कि एक सिस्टम प्रॉपर्टी, एक एप्लिकेशन पैकेज प्रॉपर्टी या सिस्टम कॉल था जो गैर-सक्रिय ईवेंट हैंडलिंग सक्षम करता था। यह विफल हो रहा है, वैश्विक स्तर पर माउस आंदोलन की घटनाओं को कैप्चर करने और उन्हें जावा एप्लिकेशन में पास करने की कुछ विधि।

किसी भी सुझाव के लिए धन्यवाद ...

संपादित करें: एक आगे सवाल: एक बार माउस की घटनाओं पर कब्जा कर लिया गया है, आप उन्हें कैसे स्विंग में फ़ीड है कि वे एक ही व्यवहार कर रहे हैं ताकि देशी ओएस माउस घटनाओं के रूप में किया गया था - माउस के नीचे घटक ढूंढकर और इसे MouseEvent भेजकर ...

उत्तर

2

यह शुद्ध जावा के साथ संभव नहीं है।
आपको JNI की आवश्यकता होगी और सी ++ या किसी अन्य भाषा में वैश्विक कीलिस्ट (या keyboard hook) लिखने के लिए।

पिछले विषय पर: this OSX के लिए एक दिया समाधान था।

+0

धन्यवाद, मुझे डर था कि यह मामला होगा। कैप्चर की गई घटनाओं को जावा एप्लिकेशन पर वापस लाने पर कोई संकेत, ताकि स्विंग उनके साथ व्यवहार करे जैसे कि वे ओएस से आए (माउस के नीचे घटक ढूंढकर और माउसवेन्ट भेजकर)। – CuriousPanda

+0

क्षमा करें, लेकिन मेरे पास मैक ओएसएक्स नहीं है, इसलिए मैं इसे आजमा नहीं सकता। मैंने 'जेएनआई' और 'कीबोर्ड हुक' शब्द के ज्ञान के साथ थोड़ा सा गुगल किया। –