gpt4 book ai didi

java - 尝试使用 JAVA 读取滚动锁定状态

转载 作者:行者123 更新时间:2023-12-03 12:58:38 27 4
gpt4 key购买 nike

我有以下代码行,我正在尝试使用这些代码行来读取滚动锁定的状态。

当我的程序启动时,我得到滚动锁定的状态。但是我愿意实时获取状态。请指导以下内容

package assignment;

import java.awt.Toolkit;
import java.awt.event.KeyEvent;

import org.omg.PortableServer.THREAD_POLICY_ID;

public class ScrollLockOnOff {

public static void main(String[] args) throws InterruptedException
{
while(true)
{
Thread.sleep(1000);
Toolkit toolkit=Toolkit.getDefaultToolkit();
System.out.println(toolkit.getLockingKeyState(KeyEvent.VK_SCROLL_LOCK));
}
}

}

最佳答案

这是一个有趣的行为,正确报告初始状态但依赖于后续事件处理(具有聚焦的顶级窗口或托盘图标)进行更新。

如果我们有办法将 AWT 重置为其初始状态,它应该可以解决问题。如果我们没有发现这种可能性,直接的解决方法是运行一个新的 JVM。由于具有相同属性的新 JVM 将使用缓存甚至共享内存中的资源,因此开销比听起来要小得多。每秒执行一次操作没有问题:

public class ScrollLockOnOff {
public static void main(String[] args)
throws InterruptedException, AWTException, IOException {

if(args.length == 1 && args[0].equals("VK_SCROLL_LOCK")) {
System.exit(Toolkit.getDefaultToolkit()
.getLockingKeyState(KeyEvent.VK_SCROLL_LOCK)? KeyEvent.VK_SCROLL_LOCK: 0);
return;
}

ProcessBuilder b = new ProcessBuilder(
Paths.get(System.getProperty("java.home"), "bin", "java").toString(),
"-classpath", System.getProperty("java.class.path"),
ScrollLockOnOff.class.getName(), "VK_SCROLL_LOCK"
).inheritIO();

while(true) {
Thread.sleep(1000);
int state = b.start().waitFor();
if(state != 0 && state != KeyEvent.VK_SCROLL_LOCK) {
System.err.println("failed");
break;
}
System.out.println(state == KeyEvent.VK_SCROLL_LOCK);
}
}
}

关于java - 尝试使用 JAVA 读取滚动锁定状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61359316/

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