有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing(Java)我可以使用KeyListener输入文本吗?(内部事件调度线程)

我正在构建一个Swing游戏,它完全由一个JPanel对象绘制(包括所有内容、菜单)。我在这个JPanel中有一个游戏循环,它处理从更新游戏状态到绘制游戏状态等所有事情

现在,我需要以某种方式使播放器能够在一些菜单中键入自己的文本。创建一个新的玩家档案,保存一些其他信息等等。我似乎找不到一个好办法来做这件事。使用扫描器显然是不可能的,因为这样做会中断事件调度线程,当场冻结游戏(我知道这很难做到)

我的结论是,唯一的方法是使用KeyListener以某种方式记录我在键盘上按下的键。我一直在试验它的键类型方法,但结果很差。我已经能够让它记录我的按键,但问题是,它记录了我按下的每个键,包括退格、控件、制表符等等。。。另外,我输入的每个字符都是大写输出的,不管我是否有大写锁定

我希望你能理解我在这里想要实现的目标。所以我真正的问题是:有没有什么简单的方法可以用KeyListener记录键入的内容?或者在事件调度线程内部是否有其他方法可以使用


共 (1) 个答案

  1. # 1 楼答案

    你的选择是:

    1. 使用标准的popup dialog并以这种方式获取文本
    2. 将文本字段嵌入面板以接收输入

    问题是KeyListener只是监听关键事件。标准文本输入组件将其与用于处理文本的DocumentListener相结合