मैंने एक एसडब्ल्यूटी यूआई लिखा है जिसमें स्टाइलटेक्स्ट नियंत्रण में टेक्स्ट प्रदर्शित करने का प्राथमिक कार्य है। मैं Ctrl + एफ के लिए एक हैंडलर जोड़ना चाहता हूं ताकि जब उस शॉर्टकट दबाया जाता है तो फोकस एक खोज बॉक्स पर सेट होता है। मैंने कुंजीपटल का पता लगाने के लिए निम्न कोड का उपयोग करने का प्रयास किया है।मेरे एसडब्ल्यूटी एप्लिकेशन में ctrl-f का पता लगाने के लिए कैसे करें
sWindow = new Shell();
...
sWindow.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
@Override
public void handleEvent(Event e)
{
System.out.println("Filter-ctrl: " + SWT.CTRL);
System.out.println("Filter-mask: " + e.stateMask);
System.out.println("Filter-char: " + e.character);
}
});
मैं उम्मीद कर रहा था कि जब मैं Ctrl +दबाया च मैं निम्नलिखित उत्पादन देखना होगा:
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: f
हालाँकि, व्यवहार में मैं वास्तव में निम्नलिखित देखते हैं।
Filter-ctrl: 262144
Filter-mask: 262144
Filter-char: <unprintable char - displayed as a box in eclipse console>
मैं दो प्रश्न हैं:
- है Display.addFilter (...) एक वैश्विक शॉर्टकट जोड़ने के लिए सबसे अच्छा तरीका है? मैंने Display.addListener (...) की कोशिश की लेकिन इसे कोई भी घटना नहीं मिली।
- जब मैं Ctrl दबा रहा हूं तो मुझे दबाए गए चरित्र क्यों नहीं मिलते हैं? जब मैं Alt या shift दबाता हूं तो मुझे अपेक्षित मुखौटा और दबाया गया चरित्र मिलता है।
यह एक उत्कृष्ट उत्तर था - अब मुझे अपना शॉर्टकट काम मिल गया है। धन्यवाद! मैं अगली बार दस्तावेज़ों को बेहतर ढंग से पढ़ने की कोशिश करूंगा! – mchr
जिसने मेरी समस्या भी हल की, स्पष्ट स्पष्टीकरण के लिए धन्यवाद! +1 –
हम इस तरह के फ़िल्टर को जोड़कर ctrl + c जैसे सिस्टम शॉर्टकट को ओवरराइड कैसे कर सकते हैं? – Fahad