جافا سوينغ:لا يعمل Ctrl+F1 على مستوى العالم، بل يعمل مع كل مجموعة مفاتيح أخرى
سؤال
لدي واجهة مستخدم متأرجحة مع جزء مبوب في الشمال.تتم إضافة العديد من الأحداث الرئيسية إلى خريطة الإدخال الخاصة بها:
InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");
إذا تم التركيز على الجزء المبوب أو زر آخر في شريط الأدوات، كنترول+F1 ليس لديه وظيفة.إذا تم التركيز على مكون آخر (على سبيل المثال.جي تري)، كنترول+F1 ينفذ العمل.
المشكلة هي أنها تعمل في كل مكان إذا قمت بتغيير رمز المفتاح إلى على سبيل المثال. VK_F2
.
المفتاح F1 لا يستخدم في أي مكان آخر في البرنامج.
اي فكرة؟
شكرا ، أندريه
يحرر: أعطى البحث عن النص الكامل في كود مصدر جافا الإجابة:ال ToolTipManager
يسجل المفتاح كنترول+F1 لعرض نص تلميح الأداة في حالة الضغط على مجموعة المفاتيح.لذا، إذا تم التركيز على زر به تلميح أداة، كنترول+F1 يتم التعامل معه من قبل ToolTipManager
.وإلا فإن عملي يسمى.
المحلول
لكي يحصل هذا على إجابة، إليك الحل المنسوخ من تعديلك في السؤال.؛-)
يقوم ToolTipManager بتسجيل المفتاح كنترول+F1 لعرض نص تلميح الأدوات إذا تم الضغط على مجموعة المفاتيح.لذلك إذا كان زر مع تلميح الأدوات يركز ، كنترول+F1 يتم التعامل معها من قبل tooltipmanager.وإلا فإن عملي يسمى.
نصائح أخرى
قد يكون نظام التشغيل يعيد استهداف F1 مفتاح؟قم بتثبيت مستمع رئيسي وشاهد الأحداث التي يتم التعامل معها.
بالمناسبة:سيكون من المفيد أن تتمكن من تعديل سؤالك وإدراج بعض التعليمات البرمجية القابلة للاختبار.