如果尚未获得Caps Lock状态,并将其设置为on,我该怎么办?

时间:2011-09-15 17:47:33

标签: java toggle capslock

我想了解一个关于如何关闭的大写锁定的具体示例。

我知道如何切换密钥,我一直在使用它:

toolkit.setLockingKeyState(KeyEvent.VK_CAPS_LOCK, Boolean.TRUE);

无论是打开还是关闭,都会改变按键的状态。 但是我想确保它在应用程序开始时就已经开启了。

(最终目标是让键盘LED以某些顺序闪烁,如果我有一定的起始状态,效果会更好。)

2 个答案:

答案 0 :(得分:16)

您可以使用getLockingKeyState检查当前是否设置了大写锁定:

boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);

但是,没有必要 - setLockingKeyState不会切换键的状态,而是设置它。如果你传递它true,无论原始状态如何,它都会将键状态设置为on:

Toolkit.getDefaultToolkit().setLockingKeyState(KeyEvent.VK_CAPS_LOCK, true);

答案 1 :(得分:0)

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication52;

import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JFrame;
import javax.swing.JTextField;

/**
 *
 * @author DSF Inc - Admin
 */
public class JavaApplication52 extends JFrame {

    JavaApplication52() {
        setLayout(null);

    
        JTextField t = new  JTextField();
        t.setBounds(0,0,300,20);
        add(t);
    
        t.addKeyListener(new KeyAdapter() {
            @Override
            public void keyPressed(KeyEvent e) {
                boolean isOn = Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);

                if (isOn == true) {
                    System.err.println("ON");
                } else {
                    System.err.println("OFF");
                }
            }
        });

        setSize(300, 400);
        setVisible(true);
        setResizable(false);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        JavaApplication52 fr = new JavaApplication52();
    }
}