我有一个要添加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中使用它。