代码之家  ›  专栏  ›  技术社区  ›  Miklós Sebestyén

删除鼠标侦听器(Java)-消费不起作用

  •  0
  • Miklós Sebestyén  · 技术社区  · 7 年前

    或者至少是一种变通方法。在第五页之后,我不得不爬到谷歌搜索的黑暗角落。

    我决定用java制作一个简短的CYOA。答案在jbuttons中。基本相同的按钮,不同的文本。我在游戏中添加了一个skillcheck,类以布尔形式返回成功。问题是,consume()并没有删除注册到鼠标单击的操作-它正在获得越来越多的skillcheck和“rolls”实例。相关部分:

    public class b03 implements MouseListener {
    
        @Override
        public void mouseClicked(MouseEvent arg0) {
            characters.SkillcheckParty skillcheck = new characters.SkillcheckParty();
            boolean success = skillcheck.scpPerception(12, -5, 40); 
            arg0.consume();
            Battleground.conv.ans1.addMouseListener(new b04());
        }
    }
    

    或者至少是一种变通方法。在第五页之后,我不得不爬到谷歌搜索的黑暗角落。 ans1.removeMouseListener(ans1.getMouseListeners()[2])<-正在从鼠标侦听器阵列中删除。[0]是JButton的基本侦听器。[1] 保留以产生效果。[2] 导致问题的原因。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Miklós Sebestyén    7 年前

    至少有一个解决办法。在第五页之后,我不得不爬到谷歌搜索的黑暗角落。

    ans1.removeMouseListener(ans1.getMouseListeners()[2]);
    

    <-正在从鼠标侦听器阵列中删除。[0]是JButton的基本侦听器。[1] 保留以产生效果。[2] 导致问题的原因。正在删除所有侦听器:

    for (int i = 1; i <= ans1.getMouseListeners().length-1; i++) {
            ans1.removeMouseListener(ans1.getMouseListeners()[i]);
        }