【问题标题】:How can I get the Caps Lock state, and set it to on, if it isn't already?如果还没有,我如何获得 Caps Lock 状态并将其设置为打开?
【发布时间】:2011-09-15 17:47:32
【问题描述】:

我想要一个具体的例子来说明如何打开大写锁定如果它是关闭的。

我知道如何切换键,我一直在使用这个:

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

这将改变键的状态,无论它是打开还是关闭。 但我想确保它在应用程序开始时处于开启状态。

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

【问题讨论】:

  • 你看过getLockingKeyState()吗? download.oracle.com/javase/1.5.0/docs/api/java/awt/…
  • 我实际上尝试过使用它,但由于某种原因我无法将它放入 if else 语句中。我想以这种方式使用它。我能够将其用作布尔值并尝试这样做。您是否有一个示例,您可以检查大写锁定切换的状态,如果它已经打开,您将继续使用我上面列出的方法将其打开。谢谢你的帮助。我现在也看看你的链接。
  • 您这样做是为了达到什么目的?看起来(不管它是什么),你以错误的方式接近它。
  • 我实际上只是在为 AP 计算机科学做一个有趣的项目,我只是希望键盘上的灯以特定的顺序闪烁,为了获得最佳效果,所有键都必须从以下任一开始打开或关闭。

标签: java toggle capslock


【解决方案1】:

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

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

但是,这是不必要的——setLockingKeyState 不会切换键的状态,它会设置它。如果你将它传递给true,它会将键状态设置为打开,而不管原始状态如何:

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

【讨论】:

  • 好的,我试过了,如果它是真的,它会在它打开时关闭它,如果它关闭它会打开它。奇怪...
  • 哦。等一下,如果我把 boolean.TRUE 拿出来,然后把 , true 代替
  • @Mike 没关系;该函数采用boolean,因此传递Boolean 只会强制java 将其拆箱
【解决方案2】:
/*
 * 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();
    }
}

【讨论】:

    猜你喜欢
    • 2015-03-14
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    相关资源
    最近更新 更多