gpt4 book ai didi

java - 在 JavaFX 中获取 CapsLock 状态

转载 作者:行者123 更新时间:2023-11-30 10:47:35 25 4
gpt4 key购买 nike

我正在尝试构建一个包含多项检查的输入表单。其中之一是检查 CapsLock 是否处于 Activity 状态。如果我尝试将此功能与 Java Swing 一起构建,它会起作用,请参见下面的代码。但在 JavaFX 中,它根本不起作用。我每次检查都得到相同的状态;好像我的应用程序只是要求初始状态,然后保存它,并进一步呈现...

JavaSwing(工作正常)

frame.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CAPS_LOCK){
System.out.println(Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
} else if(e.isShiftDown()){
System.out.println("SHIFT");
}
}

public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CAPS_LOCK){
System.out.println(Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
} else if(e.isShiftDown()){
System.out.println("SHIFT");
}
}

public void keyReleased(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_CAPS_LOCK){
System.out.println(Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
} else if(e.isShiftDown()){
System.out.println("SHIFT");
}
}
});

JavaFX(始终呈现相同状态)

scene.setOnKeyReleased(new EventHandler<javafx.scene.input.KeyEvent>() {
@Override
public void handle(javafx.scene.input.KeyEvent event) {
if(event.getCode() == KeyCode.CAPS){
System.out.println("CAPS");
System.out.println(Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
}
}
});

有人知道为什么吗?我能做什么?

最佳答案

编辑: 问题似乎与 Windows 相关。 This question has an answer that might work for you

当反复按下大写锁定键时,这对我有以下控制台输出:

Capslock pressed

Capslock state: true

Capslock pressed

Capslock state: false

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;

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

public class Main extends Application {

@Override
public void start(Stage primaryStage) throws Exception {

Pane root = new Pane();
Scene scene = new Scene(root, 500, 500);

primaryStage.setScene(scene);
primaryStage.show();

//scene.setOnKeyPressed( event -> {
scene.setOnKeyReleased( event -> {
if ( event.getCode() == KeyCode.CAPS ) {
System.out.println("Capslock pressed");
System.out.println("Capslock state: " + Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
}
});

}

public static void main(String[] args) {
launch(args);
}
}

我不确定是什么问题?

关于java - 在 JavaFX 中获取 CapsLock 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36148952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com