الكشف عن مفاتيح اتجاه لوحة المفاتيح باستخدام مقن
سؤال
g'day كل شيء،
بعد التعلم هنا أن وحدة التحكم Java لا تدعم إدخال لوحة المفاتيح صفقة رائعة، فقد تحولت إلى التأرجح والأمر. مشكلتي الآن هي كيفية اكتشاف متى يتم استخدام مفاتيح اتجاه لوحة المفاتيح (لوحة المفاتيح غير الرقمية). لا يقوم التعليمات البرمجية الخاصة بي (أدناه) بطباعة حرف "مربع صغير" عند الضغط على المفاتيح المنخفضة، لأعلى، اليسار، المفاتيح الصحيحة. لا تختلف حرف المربع الصغير هذا عن الحرف المستخدم بواسطة مفاتيح CTRL و Alt، على سبيل المثال. هل يعرف أحد هوية مفاتيح اتجاه لوحة المفاتيح في الواقع حتى أتمكن من الرموز لهم في طلبي؟
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyChecker extends JFrame {
JLabel keyLabel = new JLabel("Hit any key");
public KeyChecker() {
super("Hit a Key");
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new FlowLayout(FlowLayout.CENTER));
KeyMonitor monitor = new KeyMonitor(this);
setFocusable(true);
addKeyListener(monitor);
add(keyLabel);
setVisible(true);
}
public static void main(String[] arguments) {
new KeyChecker();
}
}
class KeyMonitor extends KeyAdapter {
KeyChecker display;
KeyMonitor(KeyChecker display) {
this.display = display;
}
public void keyPressed(KeyEvent event) {
display.keyLabel.setText("" + event.getKeyChar());
display.repaint();
}
}
المحلول
ما يجب أن تفعله هو إلقاء نظرة على رمز المفتاح الظاهري بدلا من الشخصية الرئيسية، في keyPressed
. وبعد مثل ذلك:
public void keyPressed(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.VK_UP:
// up arrow
break;
case KeyEvent.VK_DOWN:
// down arrow
break;
case KeyEvent.VK_RIGHT:
// right arrow
break;
case KeyEvent.VK_LEFT:
// left arrow
break;
}
}
يرى http://java.sun.com/javase/6/docs/api/java/awt/event/keyevent.html. للحصول على معلومات كاملة.