首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAVA2D -移动的对象同时位于第一个位置和移动的位置

JAVA2D -移动的对象同时位于第一个位置和移动的位置
EN

Stack Overflow用户
提问于 2013-12-16 01:23:55
回答 1查看 40关注 0票数 2

我的程序有问题。我试着在轨道上移动火车,这些火车用椭圆表示。当我尝试移动这些对象时,它们被绘制在新的位置,但它们也被绘制在以前的位置。

trensPretos是trem类的链表:

‘'public trensPretos = new LinkedList();’

下面是我的代码:

代码语言:javascript
运行
复制
public void AtualizaTrensPretos()
        {
            int currentX;
            int currentY;

            // trens pretos se movem
            for (Trem t:trensPretos)
            {
                while(t.get_x() < 1100)
                {
                    currentX = t.get_x();
                    currentY = t.get_y();

                    t.setNew_x(currentX + moveX);

                    // antes da linha reta
                    if (t.get_x() < 270)
                    {
                        t.setNew_y(currentY + moveY);
                    }
                    else if(t.get_x() > 730)
                    {// depois da linha reta
                        t.setNew_y(currentY - (moveY+1));
                    }

                    setChanged();
                    notifyObservers(t);
                }

                // removo o trem após ele passar pelo cruzamento
                //          trensPretos.remove(t);
            }
        }
// Observer

// recebo trem e desenho
g2d = (Graphics2D) this.getGraphics();
        if (arg instanceof Trem)
        {
            if (g2d != null)
            {               
                g2d.setColor(((Trem) arg).getColor());
                g2d.fill(((Trem) arg).getEllipse());
            }
        }

// Trem类

公共类Trem {

代码语言:javascript
运行
复制
private int posX;
private int posY;

private Color corTrem;
private Ellipse2D formaDoTrem;
private int sizeX = 30;
private int sizeY = 30;

public Trem(Color corDoTrem)
{
    formaDoTrem = new Ellipse2D.Double();
    this.corTrem = corDoTrem;
}

public Color getColor()
{
    return this.corTrem;
}

public void setNew_x(int x)
{
    this.posX = x;
}

public void setNew_y(int y)
{
    this.posY = y;
}

public int get_x()
{
    return this.posX;
}

public int get_y()
{
    return this.posY;
}

public Ellipse2D getEllipse()
{
    this.formaDoTrem.setFrame(posX, posY, sizeX, sizeY);
    return this.formaDoTrem;
}

}

可能的问题是什么?

EN

回答 1

Stack Overflow用户

发布于 2013-12-16 01:42:51

它们是在新位置绘制的,但也是在以前的位置绘制的。

您需要先清除背景区域,然后再重新绘制列车。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20597460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档