Java awt.AWTEventMulticaster.mouseExited(未知源)

Java awt.AWTEventMulticaster.mouseExited(未知源),java,swing,mouselistener,Java,Swing,Mouselistener,所以我正在尝试实现一个猜测和检查游戏,其中显示了英语字母表中的字母,然后每次单击一个字母,如果它不是指定单词的一部分,它就会消失。(我想你可以称之为刽子手,但还有更多)。一旦游戏丢失,setLetters将再次调用,并应将所有字母重置回屏幕。(这是另一个我在本文中没有解决的问题,我知道它属于update和setLetters()之间) letters=newjlabel[26]; 对于(int i=0;i

所以我正在尝试实现一个猜测和检查游戏,其中显示了英语字母表中的字母,然后每次单击一个字母,如果它不是指定单词的一部分,它就会消失。(我想你可以称之为刽子手,但还有更多)。一旦游戏丢失,setLetters将再次调用,并应将所有字母重置回屏幕。(这是另一个我在本文中没有解决的问题,我知道它属于update和setLetters()之间)

letters=newjlabel[26];
对于(int i=0;i<26;i++){
int ch='A'+i;
字母[i]=新的JLabel(“+(char)ch);
增补(字母[i],c);
}
ctrl.setLetters(字母);
在ctrl类中有

public void setLetters(JLabel[] letters2) {
    letterLabel = letters2;
    for (int i = 0; i < letters2.length; i++) {
        letterLabel[i].addMouseListener(this); 
/* i'm assuming this issue is here with adding tons of mouselisteners to the label each time it resets, but i'm not sure how to fix it */
    }
}

@Override
public void mousePressed(MouseEvent e) {

    for (int i = 0; i < 26; i++) {
        if (e.getSource() == letterLabel[i]) {
            if    (!game.letterAvailable((letterLabel[i].getText().charAt(0)))){
                letterLabel[i].setText(" ");
            }
            else {
                game.makeGuess((letterLabel[i].getText().charAt(0)));
            }
        }

    }

    update();
}

public void update() {
    if (letterLabel != null) {
        setLetters(letterLabel);
    }
    if (panel != null) { // redraw (not important for this error)
        panel.repaint();
    };
}
public void setLetters(JLabel[]letters2){
字母标签=字母2;
对于(int i=0;i
我得到的误差是指数级的:

java.awt.AWTEventMulticaster.mouseExited(未知源)或 awt.AWTEventMulticaster.mouseExited(未知源)

根据字母的点击方式(尚未找出原因)

,如from HoverCraftfullOfeels中所述

不要将同一个侦听器添加到其侦听器代码内部的组件中

在中,您正在
按下鼠标
调用
update()
,该函数调用
setLetter
,将侦听器添加到组件中


看起来您必须进行一些重构。如果不完全了解您要完成的任务,就无法进一步帮助您。

每当您遇到异常时,您都要发布堆栈跟踪,并说明发生异常的行。在这里问问题的时候,你应该问一个问题question@peeskillet发生了两个或多个异常,因此我无法在控制台中向上滚动(使用eclipse)以查看发生异常的行。我相信eclipse控制台最多可以容纳1500行。如果你的堆栈跟踪比你的堆栈跟踪长,那么你就有一个严重的问题。关键是,你给我们的信息太少了,我们无法尝试帮助你。你甚至没有问过一个问题,那么我们到底应该回答什么呢?我的控制台中唯一的一件事就是错误重复。问题是:为什么会发生这种错误?我已经给出了使用mouseListener运行的所有代码,在不同标签上单击几下后,我得到了发生在我身上的事情。我将编辑该问题,以准确显示控制台中的内容。
public void setLetters(JLabel[] letters2) {
    letterLabel = letters2;
    for (int i = 0; i < letters2.length; i++) {
        letterLabel[i].addMouseListener(this); 
/* i'm assuming this issue is here with adding tons of mouselisteners to the label each time it resets, but i'm not sure how to fix it */
    }
}

@Override
public void mousePressed(MouseEvent e) {

    for (int i = 0; i < 26; i++) {
        if (e.getSource() == letterLabel[i]) {
            if    (!game.letterAvailable((letterLabel[i].getText().charAt(0)))){
                letterLabel[i].setText(" ");
            }
            else {
                game.makeGuess((letterLabel[i].getText().charAt(0)));
            }
        }

    }

    update();
}

public void update() {
    if (letterLabel != null) {
        setLetters(letterLabel);
    }
    if (panel != null) { // redraw (not important for this error)
        panel.repaint();
    };
}