我必须接一个热键Ctrl+Alt+C, C
(意思是,按Ctrl+Alt+C
,仅释放C
,然后再按一次)。这是我想做的事情:
import com.tulskiy.keymaster.common._
import java.awt.event._
import javax.swing.KeyStroke
class KeysCatcher {
val provider = Provider.getCurrentProvider(true)
val ctrlC = KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK + ActionEvent.ALT_MASK)
val listener = new HotKeyListener() {
def onHotKey(hotKey: HotKey): Unit = {
hotKey.keyStroke match {
case `ctrlC` =>
println("Ctrl+Alt+C 1 was pressed")
val listener2 = new HotKeyListener() {
def onHotKey(hotKey: HotKey): Unit = {
hotKey.keyStroke match {
case `ctrlC` => println("Ctrl+Alt+C 2 was pressed")
}
}
}
provider.register(ctrlC, listener2)
}
}
}
provider.register(ctrlC, listener)
}
我的想法是,一旦Ctrl+Alt+C
按下,就必须再次注册相同的热键并捕获它。我要安排一个计时器,因为第二次按下C
应该很快。但是我认为我走错了路,因为这会使事情变得非常复杂。
你的想法?PS那里没有窗口,它捕获了 全局
热键。我还尝试了Internet上的很多东西,但是它并没有按我想要的那样工作,因此在向我提供任何代码之前,请对其进行测试。
尽管此示例为Scala,但Java也可以。
依赖关系:
https://github.com/tulskiy/jkeymaster
//build.scala
val jkeymaster = "com.github.tulskiy" % "jkeymaster" % "1.1"
您只能注册一次全局热键,但是您可以在处理程序中多次接收其事件。因此,基本思想是保存上次看到此键的时间,如果两次之间有一定延迟,则可以双击:
var last = 0l
val listener = new HotKeyListener() {
def onHotKey(hotKey: HotKey): Unit = {
hotKey.keyStroke match {
case `ctrlC` =>
if (System.currentTimeMillis() - last < 700) // arbitrary delay of 700 ms
println("We have a double click!")
else last = System.currentTimeMillis()
}
}
}
如果您想要没有var的东西,我想您可以将其包装在a Promise
或其他东西中。
问题内容: 我正在为已经存在很长时间的应用程序编写单元测试。我需要测试的一些方法是这样构建的: 如果要测试这些方法,则必须在单元测试中编写如下代码: 这样做是一种好习惯吗?还是有其他方法可以测试这些方法? 我在Internet上进行了一些研究,发现了一些带有和的注释解决方案,但这是行不通的(Eclipse不断在测试中显示错误行)。我不知道这些是否是好的解决方案,因为对于整个单元测试而言,我还是一个
问题内容: 我听到这样的观点,您应该完全避免使用try / catch,因为它占用很多资源。那么诺言错误处理会更快吗?还是没关系? UPD :我知道try / catch在内部的异步代码中不起作用。我只是在想是否由于性能问题而有任何避免使用try / catch的理由?以上两种方法之间有什么区别吗? UPD2 :试着跑我的马:) https://jsperf.com/try-catch-vs- p
本文向大家介绍keepalived双机热备nginx的配置方法,包括了keepalived双机热备nginx的配置方法的使用技巧和注意事项,需要的朋友参考一下 nginx目前是我最常用的反向代理服务,线上环境为了能更好的应对突发情况,一般会使用keepalived双机热备nginx或者使用docker跑nginx集群,keepalived是比较传统的方式,虽然用docker跑nginx集群更方便,
#我的实习日记# 🕒 岗位/笔试时间 从三月份就开始投简历,一直被挂,五月份的时候 找了一个日常实习,然后骑驴找马接着投,六月底锐捷网络开,应该算最晚一批开的了,我赶紧投了,现在快七月份了,终于拿到了锐捷网络的offer,感谢锐捷网络 总结经验: 1. 不要气馁和丧失信心,心态放好 2. 硕士还是尽量找和自己研究方向相关的,如果找后端开发的话,除非是技术大佬,否则和项目很多的本科生比起来并没有什
问题内容: 我正在申请作为Java开发人员的工作。直到2001年,我才用Java编写了一些业余应用程序,此后,我主要使用c ++和其他语言工作。同时,感觉Java增长了很多,我不知道有各种各样的缩写(EJB,spring等)。 在哪里可以找到Java最近(五年)开发的简洁明了的解释?需要了解哪些关键要素? 问题答案: 2001年?哇,时代变了。那是什么?Java 1.3? 首先,语言特点: 泛型:
问题内容: 我正在尝试熟悉Swift 2和iOS 9 的新声明 我的问题是,当NSURLSession发生错误时,data参数返回nil,而错误返回某些信息。在iOS 8中,这是预期的功能,我们只使用了if语句来查找Data是否为nil。 但是 ,有了,我想到了一个new 关键字,它旨在查看是否可以正常工作,如果不能正常工作,则默认为所编写的任何代码 但是,由于数据为零,所以我遇到了意外崩溃。这是