从面板中删除关键侦听器

2023-12-30

是否可以清除我放在我的监听器JPanel?当我调用一个方法时,我放了一个KeyListener在面板上,但是当我退出此方法时,我想清除该侦听器。

这是我的方法:

private void stopBall(final Graphics2D g2, int posBallY, String winner) {

        move = false;
        scorePanel.showPressSpace(true);    

        setFocusable(true);
        requestFocus();

        addKeyListener(new KeyAdapter() {

            public void keyPressed(KeyEvent e){  
                if (e.getKeyCode() == KeyEvent.VK_SPACE){ 

                    setPosX(getPlayPanelWidth()/2);
                    setPosY(0);

                    move = true;
                    scorePanel.showPressSpace(false);
                    initBall(g2);
                } 

            }});

        if (winner == "player1") {
            scoreCountPlayer1++;
            scorePanel.getLab_Player1().setText("" + scoreCountPlayer1);


        } else if (winner == "comp") {
            scoreCountComputer++;
            scorePanel.getLab_Computer().setText("" + scoreCountComputer);
        }   
    }

您对 addKeyListener(KeyListener) 进行了不合格的调用,因此我认为您已经扩展了 JPanel。如果是这样,那么您可以调用removeKeyListener(KeyListener)。在您当前的代码中,您的关键侦听器是匿名的。您需要稍微更改它以保留该引用,如下所示:

// Create a variable holding the listener
KeyAdapter keyAdapter = new KeyAdapter()
{
  public void keyPressed(KeyEvent e)
  {
    if (e.getKeyCode() == KeyEvent.VK_SPACE)
    {
      setPosX(getPlayPanelWidth() / 2);
      setPosY(0);

      move = true;
      scorePanel.showPressSpace(false);
      initBall(g2);
    }

  }
};
// Register the listener with this JPanel
addKeyListener(keyAdapter);

// Time passes...

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

从面板中删除关键侦听器 的相关文章

随机推荐

  • 将 proguard 与 espresso/androidTest 一起使用

    我正在尝试配置 proguard 以将其与我的 espresso UI 测试风格一起使用 问题是 Proguard 倾向于忽略我的调试 proguard 配置 配置如下 buildTypes debug minifyEnabled true
  • Keras中的自定义损失函数,如何处理占位符

    我正在尝试在 TF Keras 中生成自定义损失函数 如果损失函数在会话中运行并传递常量 则该损失函数可以工作 但是 当编译到 Keras 中时 它会停止工作 成本函数 感谢 Lior 将其转换为 TF def ginicTF actual
  • 水平 recylerview 与 viewpager 滚动同步滚动

    我有一个带有一些值的视图寻呼机 与 recyclerview 上方的 recyclerview 的计数相同 就像 tablayout 一样 我已经使用 snap helper 实现了该功能 并且一切正常 我唯一想要的就是我想将 recycl
  • 无法使用 PowerShell 从远程服务器访问环境变量

    我有一个脚本来查询远程 Windows 服务器列表 以检索我创建的环境变量的值 我可以看到该变量确实存在 因为当我打印所有变量时我可以看到它 EnvObj try Name MY VAR VerbosePreference Continue
  • Typo3 ke_search 扩展致命错误

    我对 Typo3 还很陌生 如果我不明白这里的问题是什么 我很抱歉 我安装了扩展 ke search 并遵循 很多次 给出的基本和简单的说明 https www typo3 macher de en facetted search ke s
  • 将 json 解组为类型

    我得到以下数据 timestamp 1526058949 bids 7215 90 2 31930000 7215 77 1 00000000 通过 websocket 我想将其解组到 type OrderBookItem struct P
  • 如何为 Linux、OS X、Windows 制作 Travis CI 测试包?

    有没有办法告诉 Travis CI 或其他持续集成服务 在不同的操作系统上测试包 使用文件系统 最好仔细检查它是否与平台无关 Update 3 Windows 支持已发布 您现在可以在 Linux macOS 和 Windows 上使用 T
  • 将 vue 组件传递给子组件

    我正在尝试创建一个 Vue 组件 该组件将接受组件作为参数来显示数据 但我无法弄清楚如何使其工作 如果我全局注册显示组件 使用 Vue component 它可以工作 但如果我在本地注册它 则会出现以下错误 Vue warn Unknown
  • Android 任务管理器或系统对话框

    我想知道有没有一种方法可以在显示系统对话框时获取事件 例如任务管理器 关闭警报 我可以通过如下意图从我的活动中关闭系统对话框 Intent closeDialog new Intent Intent ACTION CLOSE SYSTEM
  • 如何查找一个方法中调用的所有方法?

    如何在特定方法中调用其他类的方法 EXAMPLE 方法 getItem1 public String getItem1 throws UnsupportedEncodingException String a 2 a getBytes a
  • 去掉chart js折线图中的竖线

    I am using Chart js to generate maps and have customised it to a good extent But I am not able to remove the vertical gr
  • 鼠标悬停在 html 上更改图像

    我试图让图像在鼠标悬停时发生变化 这段代码适用于 IE 但不适用于其他浏览器 如 chrome opera safari 等 有什么想法吗 a href img src img login button 11 jpg a 您应该使用 ID
  • JavaScript 触发 InputEvent.isTrusted = true

    我正在尝试自动化一些任务JavaScript我需要使用InputEvent 但是当我使用正常事件时 我得到事件 isTrusted false而我的活动什么也没做 这是我的事件代码 var event new InputEvent inpu
  • JavaScript:通过类方法创建和销毁类实例

    我试图弄清楚如何通过类方法删除对象 我希望能够创建一个具有从内存中释放对象的 destroy 方法的类 到目前为止 我所做的研究还没有结论 我知道垃圾收集最终会处理该对象 但我想要一种更明确的方法来销毁它 这可能吗 class constr
  • 如何返回满足特定事件序列的行?

    我正在尝试提取满足特定事件序列的 UserID 的记录 如果用户有一个 JOIN 然后是一个后续的 CANCEL 然后是一个后续的 JOIN 我想在结果集中返回它们 我需要根据需要一次运行此查询一天 或一次运行几天 下表显示了满足和不满足该
  • 如何使用scanf限制输入长度

    在此程序中 我采用了大小为 3 4 的维字符数组 只要我每行输入 3 个字符 它就可以正常工作 例如 如果我输入abc abd abd我得到相同的输出 但如果我在第一行 第二行或第三行输入更多字母 则会出现错误 我应该如何检查二维中的空字符
  • 如何防止NFC标签克隆?

    我正在使用 NFC 标签制作一个应用程序 并且必须防止 NFC 标签被克隆 我见过许多其他 NFC 标签 当尝试克隆时 会显示弹出消息 克隆受到限制 标签由密钥保护 我希望我的 NFC 标签具有相同的安全性 这取决于您使用的标签类型以及您想
  • NSOpenPanel runModal 崩溃?

    我有一个基于此论坛上找到的代码的例程 FSRef useOpenFileToGetFSRef NSString fileName requiredFileType NSString requiredFileType FSRef fileFS
  • 轴标签与表达式的 R 对齐

    我想绘制一个变量名称及其符号 由于某些变量的名称很长 因此我尝试将换行符与轴标签混合使用 这会导致对齐中发生有趣的事情 par mar c 1 12 1 1 plot y 1 6 1 6 yaxt n ylim c 1 6 ylab axi
  • 从面板中删除关键侦听器

    是否可以清除我放在我的监听器JPanel 当我调用一个方法时 我放了一个KeyListener在面板上 但是当我退出此方法时 我想清除该侦听器 这是我的方法 private void stopBall final Graphics2D g2