如何在JAVA中绘制区域

如何在JAVA中绘制区域,java,paint,Java,Paint,我有以下代码: public void DoDraw(Graphics g, Main_Data M_D, int x, int y){ if(x<0 || y<0 || x>50 || y>60){ return; } else if(M_D.getPix()[x][y].p_c.isEmpty()){ g.setColor(Color.red); g.drawLine(x, y, x,

我有以下代码:

public void DoDraw(Graphics g, Main_Data M_D, int x, int y){
    if(x<0 || y<0 || x>50 || y>60){
        return;
    }
    else
    if(M_D.getPix()[x][y].p_c.isEmpty()){

        g.setColor(Color.red);
        g.drawLine(x, y, x, y);
    }
    DoDraw(g ,M_D, x+1, y);
    DoDraw(g ,M_D, x, y+1);
    DoDraw(g ,M_D, x-1, y);
    DoDraw(g ,M_D, x, y-1);
    return;
}
public void DoDraw(图形g,主数据M,int x,int y){
如果(x60){
返回;
}
其他的
if(M_D.getPix()[x][y].p_c.isEmpty()){
g、 setColor(Color.red);
g、 抽绳(x,y,x,y);
}
DoDraw(g,M_D,x+1,y);
多德劳(g,mud,x,y+1);
多德劳(g,mud,x-1,y);
DoDraw(g,M_D,x,y-1);
返回;
}
这就是我的问题:线程“AWT-EventQueue-0”java.lang.StackOverflower中出现异常


请问错误在哪里

错误在于有“无限”递归
DoDraw
调用自身的方式永远不会达到递归终止的基本情况。它将在相同的参数之间来回移动,直到Java耗尽堆栈空间并必须终止。

只要看一下代码,我就可以确定您使用该方法递归调用DoDraw的次数太多了。在下面的某个地方,您的
if(x60)
不会被触发。此时,该方法无法停止自身调用。可以通过简单调试找到/: