سؤال

أحاول تغيير عدد قليل من المفاتيح الساخنة في تطبيق Java الذي أتعامل معه ويبدو أن النظام الذي أستخدمه قد لا يعمل مع مجموعات مفاتيح زر ثلاث زر. لدينا حاليًا عنصر jmenuitem وقمنا بتعيين مفتاح Hotkey مع مكالمة كهذه:

menuItem.setAccelerator(getAcceleratorKey(accelerator));

وهنا طريقة getAcceleratorKey:

    private KeyStroke getAcceleratorKey(int keyCode) {

    return KeyStroke.getKeyStroke(
                    keyCode,
                    Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),
                    false);
}

يبدو أن رمز المفاتيح الذي تأخذه هذه الطريقة كمعلمة يمكن أن يكون مفتاحًا واحدًا فقط يتم الضغط عليه باستخدام الأمر. فكيف سأفعل شيئًا مثل تحريك الأوامر Z للتراجع؟ هل أحتاج إلى استخدام فئة مختلفة؟

هل كانت مفيدة؟

المحلول

KeyStroke.getKeyStroke () يأخذ المعدلات كمعلمة. يجب أن يعطيك مزيج منهم ما تريد:

KeyStroke.getKeyStroke(keyCode, 
  java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.META_MASK);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top