我可能在 addKeyListener 的文档中遗漏了一些明显的内容, removeKeyListener , getKeyListeners或相关教程,但是对于添加的关键监听器的运行顺序有任何保证吗?我希望它们按照添加的顺序运行,但我没有看到在任何地方指定了这一点。
我遇到的情况是,我需要向现有的组件添加一个键监听器,并覆盖特定键的现有键监听器。似乎应该能够通过以下方式做到这一点:
- 使用
getKeyListeners
查找所有现有的按键监听器。 - 使用
removeKeyListener
删除每个现有的键监听器 - 使用
addKeyListener
添加我的 key 监听器。 (这只处理选定的按键,并在发生时消耗事件。) - 最后使用
addKeyListener
添加回第一步中找到的所有关键监听器。
但是,如果事实证明它无法在特定 JVM 等上运行,我不想这样做。
最佳答案
不太明白你的情况。对我来说,依靠调用监听器的顺序似乎有点狡猾。
您能不能只创建一个关键监听器包装类来检测事件何时发生,并在适当的情况下将事件委托(delegate)给包装的监听器类?
我认为有更好的方法可以实现您想要实现的目标,而不依赖于监听器排序,除非我误解了某些内容!
关于java - KeyListener 的调用顺序是否有保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5274172/