父类子类递归调用造成的堆栈溢出该怎么解决?
我想赚马内 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 自动生成的方法存根
}
}
这个问题应该怎么解决?谢谢