父类子类递归调用造成的堆栈溢出该怎么解决?

我想赚马内 2016-12-17 09:31:15
//我这有两个CLASS文件,想画一个坦克然后控制其移动,但是却造成了递归导致堆栈溢出的问题
//这是 MAIN函数
package MyTamk1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
public class Mm extends JFrame{

MyTank xiuwen1;
public static void main(String[] args) {
Mm i=new Mm();
}

public Mm() {
//这个class中的错误出现在这↓
xiuwen1=new MyTank();

this.add(xiuwen1);
this.setSize(400, 300);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


//这个是我画的坦克
package MyTamk1;
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class MyTank extends JPanel implements KeyListener{
//提示问题就出现在这一行↓
Mm ol=new Mm();
int x=0;
int y=0;
public void paint(Graphics g) {
super.paint(g);
g.drawRect(50+x, 50+y,70,70);

//左轮胎
g.drawOval(23+x, 25+y, 30, 120);
//左轮子
g.drawOval(25+x, 50+y, 25, 25);
g.drawOval(25+x, 90+y, 25, 25);
//右轮胎
g.drawOval(117+x, 25+y, 30, 120);
//右轮子
g.drawOval(120+x, 50+y, 25, 25);
g.drawOval(120+x, 90+y, 25, 25);
//主炮
g.drawOval(70+x,70+y,30, 30);
//炮管
g.drawRect(80+x, 80+y, 10, 90);


}

@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{
System.out.println("sssssss");
y=y+3;
}
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{
x=x-3;
}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{
y=y-3;
}
else if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
x=x+3;
}

ol.repaint();
}

@Override
public void keyReleased(KeyEvent e) {
// TODO 自动生成的方法存根

}

@Override
public void keyTyped(KeyEvent e) {
// TODO 自动生成的方法存根

}

}


这个问题应该怎么解决?谢谢
...全文
200 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧