我有一个要添加MouseListener作为外部类的类。我的MouseListener(MouseControl.java)如下:

public class MouseControl implements MouseListener {

FileGUI fGUI = new FileGUI();

@Override
public void mouseClicked(MouseEvent e) {
    fGUI.input.setText(null);
    fGUI.input.grabfocus();
}

@Override
public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent e) {
    // TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

}


}

但是,当我将MouseControl添加到FileGUI类时,在Eclipse中出现了StackOverflow错误。

    input.addMouseListener(new MouseControl());


“输入”是一个JTextField。

如何正确传递必要的参数,所以当我执行mouseClicked事件时,我的“输入”将执行以下操作吗?

最佳答案

我怀疑您的MouseControl类中的这行FileGUI fGUI = new FileGUI();

我怀疑在您的FileGUI类的构造函数中,您正在尝试创建MouseControl的新实例并附加为侦听器,再次在创建MouseControl的新实例时,MouseControl再次尝试创建FileGUI的实例并递归进行直到JVM抛出StackOverflowException

如果是这种情况,我建议您修改MouseControl的构造函数以接收FileGUI类的实例,然后在MouseControl中使用它。

09-13 00:35