java - 关键事件发生时代码的执行顺序

标签 java keyevent

我正在尝试用 Java 开发 Snake,并使用 KeyListeners 来获取按钮 w、a、s 和 d 的 KeyEvent。我创建了一个实现 KeyEvent 的类,并将该类的一个对象添加到我正在绘制的 Canvas 中。

游戏在 while(true) 循环中运行,在该循环内每秒调用 update() 方法 60 次,同时始终调用 render() 方法。

我现在的问题是关于 KeyEvent: 如果我输入 f.x. w,我的 KeyEvent 对象中的方法是否立即执行,或者关于我正在运行的 while 循环,代码的执行顺序如何? 在我的 while 循环中根本没有引用 KeyEvent 对象,但如果我键入一个 Key,KeyEvent 对象内的 Methode 就会被调用并执行其应该执行的操作。

我想说的是,我必须在 while(true) 循环中放置一个 if 语句,该语句将读取是否按下了任何按钮,或者 KeyListener 将在不同的线程上运行,它将在其中查找来自键盘处于 while(true) 循环中。

最佳答案

You posted no code, so we're forced to guess. The event listeners are executed on the Swing event dispatch thread. Your while loop is probably executing, concurrently, on the main thread or on a different thread.

docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html

解决了答案。

关于java - 关键事件发生时代码的执行顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57027146/

相关文章:

jquery - 将数组重置为空数组不起作用

android - 如何在我的应用程序的软键盘上使用 Enter?

java - 如何在 Java 中获取整体和每个核心的 cpu 负载 (%)?

java - Selenium 网络驱动程序 : Unable to access elements of a drop down list (un-ordered list)

java - JSON 字段 - 将字符串解析为 Int

java - 限制用户多次登录

java - 如果一个单词有 5 个字母,则每行打印一个字母,如果没有,则只打印该单词?

javascript - 在 javascript 上模拟 ctrl+v 事件

java - 如何用空格键启动游戏动画?

带 keyListener 的 Java 键输入将不起作用。我不知道我写错了什么