我一直在寻找能在按键之间有一点延迟的方法。我一直在制作这个程序,它使用JIntellitype库读取全局热键,然后启动您指定的任何一个按键序列,例如按numpad1将执行一个B C序列。我的问题是,如果我使用线程。睡眠它只是延迟X个时间,然后按所有指定的键,在任何按键之间没有任何延迟。有人对如何解决这个问题有什么建议吗?提前谢谢!
这就是我用来发送机器人类按键的东西
public void onHotKey(int identifier) {
try {
Robot bot = new Robot();
if (output.elementAt(identifier - 1).length() == 1) {
ch = output.elementAt(identifier - 1).charAt(0);
bot.keyPress(ch);
} else {
int cmdSize = output.elementAt(identifier - 1).length();
for (int c = 0; c < cmdSize; c++) {
bot.keyPress((int) output.elementAt(identifier - 1).charAt(c));
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
} catch (AWTException ex) {
Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
}
}
以下是您可能遇到的一些问题(我还在下面添加了一个“完整”的示例):
>
你只是在按键,你也需要释放按键:
robot.keyPress(c);
robot.keyRelease(c);
你可以在EDT中运行机器人。使用另一个线程来处理按键。。。
使用Robot
类已经提供的内置自动延迟功能:
Robot robot = new Robot();
robot.setAutoDelay(50); // ms
...
这是一个如何实现这一点的示例,每次按0
,它都会打印“hello”
,使用自动延迟来延迟每个键入的字符:
public static void main(String[] args) throws Exception {
final BlockingQueue<Integer> queue = new ArrayBlockingQueue<Integer>(20);
JTextArea area = new JTextArea(10, 40) {{
addKeyListener(new KeyAdapter() {
@Override public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_0) {
queue.offer(KeyEvent.VK_H);
queue.offer(KeyEvent.VK_E);
queue.offer(KeyEvent.VK_L);
queue.offer(KeyEvent.VK_L);
queue.offer(KeyEvent.VK_O);
}
}
});
}};
JFrame frame = new JFrame("Test");
frame.add(area);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
Robot robot = new Robot();
robot.setAutoDelay(50);
while (true) {
final int c = queue.take();
robot.keyPress(c);
robot.keyRelease(c);
}
}
问题内容: 我正在尝试使用新的React Lazy和Suspense创建后备加载组件。这很好用,但后备时间仅显示几毫秒。有没有办法增加额外的延迟或最短时间,因此我可以在渲染下一个组件之前显示该组件的动画? 现在懒导入 等待组件: 我可以做这样的事情吗? 问题答案: 函数应该返回对象的承诺,该对象由具有默认导出功能的模块返回。不会返回承诺,也不能那样使用。尽管任意承诺可以: 如果目标是提供 最小的
问题内容: 如何在jQuery中的按键之间延迟动作。例如; 我有这样的东西 如果用户连续输入,我想防止发布数据。那么我该如何延迟0.5秒呢? 问题答案: 您可以使用jQuery的数据功能来执行此操作,如下所示: 这里的主要优点是到处都没有全局变量,并且您可以根据需要将其包装在setTimeout中的匿名函数中,只是尝试使示例尽可能简洁。
问题内容: 我正在尝试制作一个Java应用程序,该应用程序能够在检测到Midi设备后在计算机上播放笔记。 一旦获得所需的Midi设备,我就设置了接收器,该设备的发送器将向其发送MIDI消息。 类MyReceiver看起来像: 当我运行代码并开始在Midi设备上播放时,我的等待时间很长(我听不到即时的笔记)。 我该如何解决这个问题? 问题答案: 我正在使用使用asio驱动程序来避免延迟的JAsioH
问题内容: 该Plunkr有2个链接。左侧的那个正在使用ng-click指令,并插入了on angular-touch模块。如ng- click的角接触模块描述中所述,ng-click链接不应具有300ms的延迟。但是,如果您在移动设备上进行测试,情况仍然如此。 那么plunkr是否会阻止正确的功能,因为它是在iFrame中执行的或类似的操作,还是需要将Fastclick.js插入项目才能使指令正
我正在为我正在开发的web应用程序试用AWS3和CloudFront。 在应用程序中,我允许用户上传文件到S3 bucket(使用AWS SDK)并通过CloudFront CDN使其可用,但问题是即使文件在S3 bucket中上传并准备就绪,也需要大约一到两分钟才能在CloudFront CDN url中可用,这正常吗?
我正面临着G1GC算法中GC停顿的持续增加。服务延迟随着时间的推移继续增长。一旦发生这种情况,我将重新启动服务,延迟时间将恢复正常。启动后,等待时间再次随着时间的推移而增加。