मान लीजिए कि आपके पास तीन गोले हैं। एक मुख्य खोल और दो गोले जिन्हें मुख्य खोल से खोला जा सकता है।
तो जब कोई दूसरा खोल सक्रिय हो जाता है तो मुख्य खोल अधिसूचित किया जाना चाहिए। आप एक श्रोता जो (मुख्य खोल में) एक विशिष्ट घटना प्रकार के लिए इंतजार कर रहा है जोड़ सकते हैं:
shell.addListener(SWT.Show, new Listener() {
@Override
public void handleEvent(Event e) {
System.out.println("activated: " + e.text);
}
});
अन्य गोले सक्रिय किया जाना चाहिए (notify
) इस घटना जब वे सक्रिय हो गया। इसके लिए आप अन्य दो गोले में एक शेल श्रोता जोड़ें, और fire
shellActivated()
o.notifyListeners();
के साथ विधि में ईवेंट जोड़ें।
shell.addShellListener(new ShellAdapter() {
@Override
public void shellActivated(ShellEvent e) {
Shell shellSrc = (Shell) e.getSource();
Display display = shellSrc.getDisplay();
Event event = new Event();
event.type = SWT.Show;
event.text = "other shell 1";
Shell[] shells = display.getShells();
for(Shell o : shells) {
o.notifyListeners(SWT.Show, event);
}
}
});
जब आप अन्य दो गोले मुख्य खोल घटना प्रकार SWT.Show
सूचित कर दिया जाएगा में से एक को सक्रिय करें।
स्रोत
2012-11-16 09:44:07
[ShellListener.shellActivated()] का उपयोग करना संभव नहीं है (http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi % 2Forg% 2 फिक्स्प्से% 2Fswt% 2Fevents% 2FShellListener.html) दूसरे खोल में? जब यह विंडो सक्रिय विंडो बन जाती है तो यह ईवेंट ट्रिगर होता है। –
हां, लेकिन यह एक कामकाज है जिसका मैं अब उपयोग कर रहा हूं। मैं एक साफ समाधान की तलाश में हूं। – Skip