删除鼠标侦听器 (Java) - 使用不工作

Removing mouse listener (Java) - consume not working

已解决! 或者至少是解决方法。猜猜我不得不爬到 google 搜索的黑暗角落,在第五页之后。 ans1.removeMouseListener(ans1.getMouseListeners()[2]); <- 从鼠标侦听器数组中删除。 [0] 是 JButton 的基本侦听器。 [1] 保存效果。 [2] 导致问题。

我决定在 java 中制作一个简短的 CYOA。答案在 jbuttons 中。基本上相同的按钮,不同的文本。我在游戏中添加了技能检查,class 以布尔值形式返回成功。问题是,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());
    }
}

已解决! 或者至少是解决方法。猜猜我不得不爬到 google 搜索的黑暗角落,在第五页之后。 ans1.removeMouseListener(ans1.getMouseListeners()[2]); <- 从鼠标侦听器数组中删除。 [0] 是 JButton 的基本侦听器。 [1] 保存效果。 [2] 导致问题。

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

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

<- 从鼠标侦听器数组中删除。 [0] 是 JButton 的基本侦听器。 [1] 保存效果。 [2] 导致问题。删除所有侦听器:

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

我愿意接受任何评论和补充。