وقد تبين أن عنصر القائمة التسارع الأعمال الرئيسية إلا بعد عنصر القائمة
سؤال
وأنا تطوير سبحانه وتعالى / تطبيق JFace باستخدام مكتبات من الكسوف 3.4.1. واجهت المشكلة التالية على ويندوز (فيستا 32BIT) وأوبونتو 8.10 32BIT و:
وأنا إنشاء شريط القوائم في طريقة createMenuManager من JFace ApplicationWindow. أود أن أضيف MenuManagers لملف وتحرير ومساعدة.
وبعد ذلك إضافة ExitAction إلى MenuManager ملف مثل ذلك:
filemenu.add(new ExitAction(this));
ويتم تعريف ExitAction بهذه الطريقة:
public class ExitAction extends Action {
final ApplicationWindow window;
public ExitAction(ApplicationWindow w) {
this.window = w;
setText("E&xit");
setToolTipText("Exit the application");
setAccelerator(SWT.MOD1 + 'Q');
}
}
والآن عندما يبدأ طلبي أريد أن تكون قادرة على الضغط على "CTRL + Q" لإنهاء التطبيق. هذا لا ولكن لا تعمل. فقط بعد كنت اضغط على "ملف" في شريط القوائم ومن ثم النقر على "CTRL + Q" تطبيق سيستقيل من منصبه.
ولقد حاول هذا مع مختلف نفس السلوك accelerators-.
وويعمل لكن إذا أنا خلق "MENUITEM" بدلا من "العمل" للمساهمة في شريط القوائم.
هل هذا خلل سبحانه وتعالى أو لا أفتقد شيئا؟
وتورستن.
المحلول
تحديث: يوجد خطأ مكرر من الألغام التي يحتوي أيضا على الحل. عنوان الموقع هو علة: https://bugs.eclipse.org/bugs/show_bug .cgi؟ ID = 243758
وأساسا الحل البديل هو الدعوة create()
على ApplicationWindow
ثم getMenuBarManager().updateAll(true);
الذي سيجبر كافة عناصر القائمة للحصول على تهيئة.
وبطبيعة الحال كان لديك لاستدعاء الأساليب المذكورة أعلاه بعد إنشاء عناصر القائمة.
نصائح أخرى
وAFAIK setAccelerator(.)
لا يفعل شيئا آخر من إضافة النص المناسب إلى MenuItem
الخاص بك. وكنت مسؤولا عن تسجيل لحدث KeyUp
والرد على ذلك.
ويمكنك استخدام Display.addFilter(SWT.KeyUp, myListener)
لتسجيل Listener
بشكل مستقل من الحاجيات الخاصة بك.
وتبين أن هذا هو خلل في الكسوف 3.4. لقد قدم تقرير الشوائب: https://bugs.eclipse.org/bugs /show_bug.cgi؟id=253078