我正在尝试为我的工作场所建立一个更好的用户名/密码字段,并希望能够在他们的大写锁定时抱怨.
这可能吗?如果是这样,我想在客户输入他们的第一个字母之前检测到它.
有没有非平台特定的方法来做到这一点?
我正在尝试编写一个程序首次启动时弹出的分辨率选择对话框.为了防止用户厌烦,我想实现一个相当标准的功能,您可以使用复选框关闭该对话框,但在启动时按住alt键将其取回.
不幸的是,没有明显的方法来询问java 当前是否正在按下给定的键.您只能注册以通过KeyListener通知新的按键操作,但如果按键在应用程序启动之前启动,则无效.
使用以下代码:
Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK)
Run Code Online (Sandbox Code Playgroud)
不幸的是,只返回false.
根据文档,这应该工作:http://docs.oracle.com/javase/8/docs/api/java/awt/Toolkit.html#getLockingKeyState-int-
可运行的例子:
import java.awt.Toolkit;
import java.awt.event.KeyEvent;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Foo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(1);
executorService.execute(new Runnable() {
public void run() {
while(true) {
try{ Thread.sleep(250); }catch(Exception ignored) { }
System.out.println("Capslock state: " + Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK));
}
}
});
executorService.shutdown();
}
}
Run Code Online (Sandbox Code Playgroud)
应该补充说我在Windows上使用Java SE 1.8并且我的Caplock键工作正常
控制台输出截图:

我正在尝试在密码字段上实施大写锁定警报.如果大写锁定为ON,则气泡将显示在密码字段下方.我搜索了很多,但没有得到任何解决方案,我怎么能在JavaFX中的输入字段上实现这样的气泡.我找到了一些源代码来获得大写锁定状态.
boolean isOn=Toolkit.getDefaultToolkit().getLockingKeyState(KeyEvent.VK_CAPS_LOCK);
scene.setOnKeyReleased( event -> {
if ( event.getCode() == KeyCode.CAPS ) {
System.out.println("Capslock pressed");
System.out.println("Capslock state: " + isOn);
}
});
Run Code Online (Sandbox Code Playgroud)
但我的问题是如何在文本字段上实现气泡警报.在这里你可以看到我必须做的事情.
如果你建议我一些可能的方法,因为我是JavaFX的新手,这将会很有帮助.是否有任何JavaFX库在输入字段上执行此类气泡警报?