الكشف عن مفاتيح اتجاه لوحة المفاتيح باستخدام مقن

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

سؤال

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. للحصول على معلومات كاملة.

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