2014-09-08 4 views
11

मुझे एक सरल स्विंग जीयूआई मिला है जिसमें एक टचस्क्रीन के साथ एक भूतल टैबलेट पर जेबट्टन चल रहा है। बटन ActionListeners है। जब इन बटनों को माउस से क्लिक किया जाता है तो वे दृष्टि से ठीक से निराश होते हैं। हालांकि जब वे टचस्क्रीन पर टैप किए जाते हैं तो वे दृश्यमान रहते हैं लेकिन फिर भी actionPerformed() को आग लगते हैं। यदि वे डबल टैप किए गए हैं तो वे दृष्टि से ठीक से निराश होते हैं लेकिन 2 actionPerformed() एस बंद कर देते हैं।जावा जेबटन को टच स्क्रीन के साथ दृष्टि से उदास कैसे बनाया जाए?

क्या बटन दबाए जाने के बजाए बटन दबाए जाने पर इस बटन एनीमेशन परिवर्तन को पाने का कोई तरीका है? मैंने इसका परीक्षण किया है और मैं MouseListener का उपयोग कर सकता हूं और अपना सभी तर्क mouseClicked() में डाल सकता हूं लेकिन टचस्क्रीन उपयोगकर्ताओं से बटन को दो बार टैप करने के लिए यह बहुत ही सुरुचिपूर्ण नहीं है।

+0

1. परीक्षण उद्देश्यों के लिए [बटनस्टोडफ्लो/ए/5755124/714968) से घटनाओं को ओवरराइड करें, 2. कोई विचार प्रश्न महत्वपूर्ण विवरण खोने के बारे में नहीं है, यहां कुछ उपयोगकर्ता हैं touch_screens, 3। महत्वपूर्ण एल एंड एफ का उपयोग किया जाता है, 4. बहुत व्यापक – mKorbel

+3

के रूप में बंद करने के लिए वोटिंग यह एक बिल्कुल स्पष्ट, विशिष्ट और अच्छी तरह से लिखित प्रश्न है। पोस्टिंग के एक घंटे बाद इसे अपने पहले छमाही में 10 अपवॉट मिले। यहाँ बहुत अच्छे प्रश्नों के * बहुत * घुटने-झटके बंद हैं। –

उत्तर

5

आपके पास समस्या यह है कि जबकि माउस क्लिक एक यौगिक घटना है, स्क्रीन पर एक स्पर्श नहीं है। तो ऐसा कोई रास्ता नहीं है कि यह पहली घटना में और दूसरी बार फिर से नीचे जा सके।

लेकिन जब आप टच इवेंट प्राप्त करते हैं, तो आप क्या कर सकते हैं, बटन की दृश्य स्थिति बदलती है, इसलिए यह उदास लगती है (setPressed(true) का उपयोग करके), फिर 100ms या उसके लिए टाइमर सेट करें, और राज्य को सामान्य पर सेट करें जब टाइमर समाप्त हो जाता है (setPressed(false) का उपयोग कर)।

टाइमर समाप्ति के साथ सावधान: आपको UI थ्रेड पर होने के लिए setPressed(false) की आवश्यकता है। इसलिए आपको SwingUtilities.invokeLater() को दूसरी कॉल के चारों ओर एक रैपर के रूप में setPressed पर उपयोग करने की आवश्यकता होगी। या, वैकल्पिक रूप से, दूसरी कॉल कतार के साधन के रूप में javax.swing.Timer का उपयोग करें; इसमें देरी होती है और Action, और Action UI थ्रेड पर प्रदर्शन किया जाता है।

+0

नहीं, मुझे कोई समस्या नहीं है, न ही JButtons चित्रकला – mKorbel

+0

धन्यवाद, मुझे जाना होगा और देखें कि मैं इस दृष्टिकोण के साथ कैसे चल रहा हूं। –

+0

पूरी तरह से काम करता है। –

संबंधित मुद्दे