栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

处理多次按键而忽略重复按键

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

处理多次按键而忽略重复按键

你obseravtion事情最有可能慢慢地处理造成 仅仅 是众多的System.out.println()语句。

您没有得到对角线移动的问题是由于您的检查逻辑有些错误-而不是显式检查(例如)是否按下了键A B,而是独立地检查它们-键A在一个方向上移动字符,B在另一个方向上移动字符。总计(例如),通过移动WEST NORTH,您将有效地移动NORTHWEST。

除了使用按键列表之外,您还可以使用java.util.BitSet并为每个当前按下的按键设置位。这也应该大大减少您需要编写的代码量(keyPressed只是设置密钥代码指示的位,keyReleased清除它)。要检查是否按下了按键,请询问BitSet,然后询问当前是否设置了代码位。

编辑:使用BitSet而不是列表的示例

public class BitKeys implements KeyListener {    private BitSet keyBits = new BitSet(256);    @Override    public void keyPressed(final KeyEvent event) {        int keyCode = event.getKeyCode();        keyBits.set(keyCode);    }    @Override    public void keyReleased(final KeyEvent event) {        int keyCode = event.getKeyCode();        keyBits.clear(keyCode);    }    @Override    public void keyTyped(final KeyEvent event) {        // don't care    }    public boolean isKeyPressed(final int keyCode) {        return keyBits.get(keyCode);    }}

我使示例实现了KeyListener,因此您甚至可以按原样使用它。当您需要知道是否按下某个键时,请使用isKeyPressed()。您需要确定是喜欢原始密钥代码(就像我一样)还是选择关键字符(就像您当前所做的那样)。无论如何,您将看到使用BitSet类将用于记录密钥的代码量减少到几行:)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463422.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号