وقد تبين أن عنصر القائمة التسارع الأعمال الرئيسية إلا بعد عنصر القائمة

StackOverflow https://stackoverflow.com/questions/239744

  •  04-07-2019
  •  | 
  •  

سؤال

وأنا تطوير سبحانه وتعالى / تطبيق 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top