2013-05-21 3 views
6

removeEventHandler() ठीक है, लेकिन अगर मैं हैंडलर पर संदर्भ नहीं रखता तो क्या होगा?जावाएफ़एक्स। सभी ईवेंट हैंडलर को हटाएं (फ़िल्टर)

क्या मैं घटना प्रकार या यहां तक ​​कि सभीसे सभी हैंडलर द्वारा किसी भी ईवेंट हैंडलर (फ़िल्टर) को हटा सकता हूं। scene.Node उदाहरण? मुझे लगता है कि कहीं हैंडलर की एक सूची मौजूद थी, और मैं इसे पार कर सकता हूं, और जो चाहता हूं उसे हटा सकता हूं।

उत्तर

2

क्या मैं इवेंट प्रकार या यहां तक ​​कि सभी हैंडलर को अपने javafx.scene.Node उदाहरण से किसी भी ईवेंट हैंडलर (फ़िल्टर) को हटा सकता हूं?

मुझे नहीं लगता कि आप एक ईवेंट हैंडलर या फ़िल्टर को हटा सकते हैं जिसका मूल रूप से संदर्भ नहीं था। आप add extra event filters टाइप करके ईवेंट के लिए प्रसंस्करण को फ़िल्टर करने के लिए कर सकते हैं या आप set your own event dispatcher on the node कर सकते हैं और अपना कस्टम प्रेषक केवल उन ईवेंट को आगे बढ़ा सकता है जिन्हें आप नोड के मानक ईवेंट प्रेषक के लिए चाहते हैं।

मुझे लगता है कि कहीं हैंडलर की एक सूची मौजूद थी, और मैं इसे पार कर सकता हूं, और जो चाहता हूं उसे हटा सकता हूं।

हां, लेकिन इसे private implementation of the Node के भीतर दफनाया गया है, तो शायद आप ऐसा करने के लिए निजी नोड कोड को हैक करना नहीं चाहते हैं।

2

मैं इस प्रश्न पर आया कि यह देखने के लिए कि ईवेंट हैंडलर को स्वयं कैसे हटाएं। मेरे प्रश्न का उत्तर यहां था, मुझे नहीं पता कि यह आपकी मदद करेगा या नहीं। javafx have an eventfilter remove itself

यहाँ एक उदाहरण

EventHandler<MouseEvent> object_clicked=new EventHandler<MouseEvent>() { 
    @Override 
    public void handle(MouseEvent event) { 
     // on click actions here 

     my_node.removeEventFilter(MouseEvent.MOUSE_CLICKED, this); // at the bottom 
    } 
}; 

my_node.addEventFilter(MouseEvent.MOUSE_CLICKED, object_clicked); // add the eventhandler to the node 
है
संबंधित मुद्दे