GWT

2008-10-18 16 views
5

में बबलिंग से किसी ईवेंट को रोकें मेरे पास कोड का निम्न स्निपेट है, changeTextArea एक TextArea ऑब्जेक्ट है।GWT

changeTextArea.addKeyboardListener(new KeyboardListenerAdapter() 
    public void onKeyPress(Widget sender, char keyCode, int modifier){ 
    //do something 
    //I WISH TO STOP THE EVENT THAT MAPS TO THIS KEYPRESS FROM BUBBLING ANY FURTHER 
    } 
} 

मैं घटना खड़ी कर रहा है कि इस विधि पैनलों/विजेट/सम्मिश्र/जो कुछ भी changeTextArea शामिल में changeTextArea से खलबली मचाने वाले से कहा जा कैसे बंद कर देंगे। संक्षेप में रखो, मैं इसे आगे बुलबुले से कैसे रोकूं। किसी भी मदद की सराहना की जाएगी (विशेष रूप से कोड नमूने)।

उत्तर

6

मुझे पता है अब तक के रूप में आप एक कुंजीपटल श्रोता के माध्यम से यह नहीं कर सकते, लेकिन यह डोम वर्ग का उपयोग कर एक घटना पूर्वावलोकन जोड़कर संभव है: जब आप घटना मिलता है तो फिर

DOM.addEventPreview(EventPreview preview) 

:

onEventPreview(Event event) 

आपको यह कहना गलत लगता है कि आप ईवेंट को रद्द करना चाहते हैं। इवेंट ऑब्जेक्ट भी इस विधि का समर्थन करता है:

public final void cancelBubble(boolean cancel) 

दिए गए ईवेंट के लिए बबलिंग रद्द कर देता है। यह घटना को मूल तत्वों के प्रचार के रूप में रोक देगा।

आप अधिक विवरण यहाँ पा सकते हैं: http://google-web-toolkit.googlecode.com/svn/javadoc/1.5/index.html?overview-summary.html

4

आप निश्चित रूप से घटना की पहुंच है कि किसी भी कोड के भीतर से घटना के cancelBubble() और preventDefault() तरीकों का उपयोग कर सकते हैं। इवेंट पूर्वावलोकन करने की कोई आवश्यकता नहीं है ...

2

आप प्रेषक की रद्दकी() ईवेंट को कॉल कर सकते हैं। यहां एक उदाहरण दिया गया है जो केवल संख्याओं को इनपुट करने की अनुमति देगा, अन्य सभी कुंजियां अस्वीकार हो जाएंगी।

निजी वर्ग RowColChangeHandler KeyPressHandler लागू करता है {

public void onKeyPress(KeyPressEvent event) { 
     char keyCode = event.getCharCode(); 
     if(keyCode <48 || keyCode >57) 
     { 
      ((TextArea)event.getSource()).cancelKey(); 
     } 
    } 
} 
0

आप इसे जब संभव event.doit = false

+0

करके शायद कुछ स्पष्टीकरण आपका जवाब ज़्यादा उपयोगी बना देगा तक पहुँच सकता है :) –