单击按钮后按键监听器不工作

2024-01-08

我在java中的框架上附加了一个按键侦听器,当我按下任何键时,我可以检测到按键,但是奇怪的事情正在发生。我的游戏是扫雷游戏,我有一个重新启动按钮,基本上可以清除棋盘并重新挖掘它。奇怪的是,当我用鼠标单击按钮时,一切都正常,并且面板被提醒,但按键侦听器停止工作。更奇怪的是,我有一个 jmenuitem 基本上可以自动单击按钮。所以它就像 restartbutton.doclick()

如果我单击 jmenuitem 重新启动,它会重新启动并清除所有内容,并且按键侦听器仍然起作用。我什至可以看到按钮被点击。有什么想法为什么会发生这种情况吗?

Thanks

这是附加到我的主机上的。这是单击按钮后停止工作的侦听器。

frame.addKeyListener(new KeyListener(){


       public void keyReleased(KeyEvent e){


       }

       public void keyPressed(KeyEvent e){

       System.out.println("hey");
       int keycode = e.getKeyCode();

       if(e.isControlDown() & keycode==KeyEvent.VK_C){

      balh blah balh
       }

       }

       public void keyTyped(KeyEvent e){


       }

       });

建议:

  • 您的问题是一个焦点问题,KeyListener 停止工作,因为它正在侦听的容器已失去对 JButton 的焦点。
  • 一种解决方案是使 JButton 无法通过调用获得焦点setFocusable(false) on it.
  • 但我建议您如果可能的话根本不要使用 KeyListener,而是使用键绑定,因为使用绑定就不会出现此问题,而且它是更高级别的构造。

Edit
关于:

将其更改为键绑定的最佳方法是什么?

最好的办法是通过按键绑定教程 http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html并实施那里提出的建议。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

单击按钮后按键监听器不工作 的相关文章

随机推荐

  • 在R中添加一列两个坐标的距离

    我有一个这样的数据框 id value lat1 lng 1 lat2 lng2 dist 124 50 4 13 2423 46 2342 13 2423 46 2342 537 34 2 13 2434 46 2331 13 2423
  • 如何组合两个不同的 monad

    我正在测试 REST 服务器 我在 IO monad 中击中它并在中模拟它State Db where Db跟踪服务器的假定状态 以下函数应该运行两个版本并比较结果 check Eq a MonadState d s gt s a gt I
  • “折叠”LINQ 扩展方法在哪里?

    我发现在MSDN 的 Linq 示例 http msdn microsoft com en us vcsharp aa336747 aspx foldSimple我想使用一个名为 Fold 的简洁方法 他们的例子 double double
  • Pandas Wide_to_long 的行为与 Python 2.7 中的先前版本有很大不同

    我升级了笔记本电脑并安装了 Python 2 7 和 Pandas 0 23 由于 Wide to long 的结果不同 我以前工作的所有脚本都不再运行 数据框如下所示 Index ID Text column abc A abc B ab
  • Python——如何查看不适合屏幕的输出?

    我应该说我正在寻找问题的解决方案查看不适合您屏幕的输出 例如 range 100 将显示高度为 30 的终端中的最后 30 行 我只是希望被推向正确的方向 并且很好奇你们是如何解决这个问题的 当您遇到希望可以方便地滚动浏览一些大输出的情况时
  • 更改 teechart 中的单点颜色

    我在java中使用teechart 我想改变一系列点的颜色 而不是所有点 如果点的值超过特定值 则将点变成红色 我只知道如何更改所有点的颜色 这是我的代码 xline getPointer setVisible true 数据点突出显示 x
  • 与 mdf 文件的多个连接

    我正在为一个大学项目创建一个使用 C 的 Net 应用程序 并且需要一些帮助 我在网络驱动器上托管了一个 mdf 文件 并且需要多个客户端才能从其应用程序访问此数据库 每个客户端计算机都将运行自己的 sql express 实例 我可以从我
  • 实体框架包括扩展返回大量数据

    我有两个实体 User 和 UserPermission User 实体包含所有常规字段 Id Username Email 等 UserPermission 实体有两个值 UserId 和 PermissionId 我编写了一个存储库方法
  • 在 PHP 中,检查 30 分钟是否已过的示例?

    我有一个验证功能 用户将在 30 分钟后自动注销 我想在身份验证功能中存储登录时间 时间戳 然后 每次调用需要身份验证的函数时 我都会更新该时间 如果距上次通话已过去 30 分钟 则会自动重新进行身份验证 我将把上次访问时间戳或日期存储在全
  • 如何将 CMake 文件 (GLOB SRCS *.) 与构建目录一起使用

    这是我当前的 CMakeLists txt 文件 cmake minimum required VERSION 3 3 set CMAKE C FLAGS Wall g project bmi file GLOB SRCS cpp h ad
  • 选择 xQuery 中的第 n 个子元素/选择下一个元素

    我无法找到好的 xQuery 教程 基本上我想做的是检索文本etc 从这个 html 节点 div class venue div class vitem p style padding 6px 0pt 0pt class label AD
  • 配置 Microsoft.AspNet.Identity 以允许电子邮件地址作为用户名

    我正在创建一个新应用程序 并开始使用 EF6 rc1 Microsoft AspNet Identity Core 1 0 0 rc1 Microsoft AspNet Identity EntityFramework 1 0 0 rc1
  • PowerShell 是强类型语言吗?

    PowerShell 肯定属于动态语言的范畴 但它会被视为强类型吗 这些术语存在一定程度的混乱 本文 http eli thegreenplace net 2006 11 25 a taxonomy of typing systems 解释
  • 在Android应用程序上获取id令牌并在后端服务器上验证它(如何使用id令牌?)

    我正在开发一个 Android 应用程序 它使用来自我自己的 REST API 服务器的数据 我想使用 Firebase 身份验证 因为它允许用户以非常简单的方式使用 Google Facebook Twitter 登录 但我不知道如何使用
  • Intl.Collat​​or 和带有数字选项的自然排序对十进制数字的排序不正确

    使用对十进制数进行排序Intl Collator以及启用的选项numeric比较小数不正确 在某些浏览器上 比较 0 005 和 0 05 会返回 0 因为数字相同 不同浏览器中的结果 铬 54 0 火狐 49 0 边缘 1 IE 11 1
  • 如何跳过 PHPUnit 中的前 N ​​个测试?

    场景 使用 PHPUnit 运行大量测试 一些测试 例如 1544 中的 537 个 在几分钟后失败 更改很小 不太可能影响之前的测试 我希望能够跳过前 536 个测试 执行类似这样的操作以 从我上次停下来的地方继续 phpunit ski
  • 在 ASP.NET 中自动进行 HtmlEncode

    被 Ruby on Rails 3 宠坏了 我希望所有 HTML 输出都能自动编码 我问这个关于脚本漏洞的问题 https stackoverflow com questions 7136864 script exploits in asp
  • 将本机页脚视图添加到 webview

    我有一个WebView和我想在下面添加的本机自定义视图WebView 我试过包裹WebView里面一个ScrollView 虽然这正是我想要的 但滚动性能确实很滞后 如果用户点击屏幕滚动滚动条并不会像应有的那样停止滚动 我想到的另一种方法是
  • ASP.NET MVC + 模型状态和部分视图

    我有一个名为 LogOn 的部分视图 其中我基本上将登录输入复制到控件中 我使用 Html RenderPartial 将控件放置在 Ajax BeginForm 内的 Index Html 中 div div 我正在尝试传回验证消息并显示
  • 单击按钮后按键监听器不工作

    我在java中的框架上附加了一个按键侦听器 当我按下任何键时 我可以检测到按键 但是奇怪的事情正在发生 我的游戏是扫雷游戏 我有一个重新启动按钮 基本上可以清除棋盘并重新挖掘它 奇怪的是 当我用鼠标单击按钮时 一切都正常 并且面板被提醒 但