2

我想在运行时知道 NUM LOCK 或 CAPS LOCK 键是打开还是关闭。但我需要以可移植的方式(适用于所有 Java 平台)来做到这一点。

以下两种方法不起作用:

1) 在 Linux 下使用 OpenJDK-6 抛出 UnsupportedOperationException: Toolkit.getLockingKeyState:

Toolkit toolkit = Toolkit.getDefaultToolkit();
boolean numlock = toolkit.getLockingKeyState(KeyEvent.VK_NUM_LOCK);

2)它显示一个框架,但我们需要这样做而不显示工件(在这里找到的想法):

import java.awt.*;
import java.awt.event.*;

public class Test {

    public static void main(String[] args) throws AWTException {

        // create AWT component
        Frame f = new Frame();
        // handle component's keyPressed event
        f.addKeyListener(new KeyAdapter() {
            public void keyPressed(KeyEvent ev) {
                System.out.println(Character.isUpperCase(
                  ev.getKeyChar()) ? 
                    "Caps Lock ON" : 
                    "Caps Lock OFF");
            }       
        });
        // make component visible (otherwise the Robot won't work)
        f.show();
        // create Robot
        Robot robot = new Robot();
        // generate simple caracter key press
        robot.keyPress(KeyEvent.VK_A);  

    }

}
4

0 回答 0