अपने ईवेंट श्रोता पर, आप ईवेंट को मूल घटक में प्रेषित कर सकते हैं।
myEvent
होने के नाते घटना समारोह तर्क से निपटने:
Component source=(Component)myEvent.getSource();
source.getParent().dispatchEvent(myEvent);
लेकिन यह समाधान प्रत्येक तत्व जोड़ने के लिए के लिए एक नया EventListener बनाने निकलता है।
तो, आप एक ही ईवेंट हैंडलर बना सकते हैं और इसे पुन: उपयोग, सभी चुने हुए बच्चों में जोड़ने से इस तरह:
final Container parent=this; //we are a the parent container creation code
MouseListener myCommonListener=new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
parent.dispatchEvent(e);
}
@Override
public void mouseEntered(MouseEvent e) {
parent.dispatchEvent(e);
}
@Override
public void mouseExited(MouseEvent e) {
parent.dispatchEvent(e);
}
@Override
public void mousePressed(MouseEvent e) {
parent.dispatchEvent(e);
}
@Override
public void mouseReleased(MouseEvent e) {
parent.dispatchEvent(e);
}
};
JLabel label=new JLabel("This is the first Label");
label.addMouseListener(myCommonListener);
JLabel label2=new JLabel("This is the second Label");
label2.addMouseListener(myCommonListener);
//... and so on
स्रोत
2010-09-29 06:26:38
क्यों आप इस (उदाहरण) करने की आवश्यकता है? – Pete
मेरे पास कई लेबलों के साथ ऑब्जेक्ट्स हैं, जो वास्तव में पहली बार क्लिक किए जाने पर ड्रैगगेबल होना चाहिए। अभी वे केवल तब खींच सकते हैं जब मैं तत्व की पृष्ठभूमि पर क्लिक करता हूं, अंदर कोई लेबल नहीं। – viraptor