因此,每当用户在 Swing 应用程序中的任意位置按下空格键时,我想触发一个事件(暂停/取消暂停某些媒体)。
由于有如此多的控件和面板可以具有焦点,因此实际上不可能向所有控件和面板添加关键事件(更不用说总的)。
所以我发现
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher()
这太棒了,您可以注册全局按键预处理程序。但有一个主要问题 - 在输入字段、表格单元格等中始终会键入空格,而我显然不想触发暂停事件!
那么有什么想法吗?
也许有办法全局检测光标是否集中在允许文本输入的内容上,而不必检查所有可编辑控件的列表(呕吐!)?
我想你自己回答了这个问题 - 是的,我认为你可以找出当前具有焦点的元素,如果它是某个字段类的实例,你可以忽略用于暂停事件的空间。如果它看起来很严厉,别担心,instanceof 对于 JVM 来说非常快(无论如何,你谈论的是人类规模的事件,这对处理器来说是一个亿万年)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)