swing(Java)我可以使用KeyListener输入文本吗?(内部事件调度线程)
我正在构建一个Swing游戏,它完全由一个JPanel对象绘制(包括所有内容、菜单)。我在这个JPanel中有一个游戏循环,它处理从更新游戏状态到绘制游戏状态等所有事情
现在,我需要以某种方式使播放器能够在一些菜单中键入自己的文本。创建一个新的玩家档案,保存一些其他信息等等。我似乎找不到一个好办法来做这件事。使用扫描器显然是不可能的,因为这样做会中断事件调度线程,当场冻结游戏(我知道这很难做到)
我的结论是,唯一的方法是使用KeyListener以某种方式记录我在键盘上按下的键。我一直在试验它的键类型方法,但结果很差。我已经能够让它记录我的按键,但问题是,它记录了我按下的每个键,包括退格、控件、制表符等等。。。另外,我输入的每个字符都是大写输出的,不管我是否有大写锁定
我希望你能理解我在这里想要实现的目标。所以我真正的问题是:有没有什么简单的方法可以用KeyListener记录键入的内容?或者在事件调度线程内部是否有其他方法可以使用
# 1 楼答案
你的选择是:
问题是KeyListener只是监听关键事件。标准文本输入组件将其与用于处理文本的DocumentListener相结合