Java 为什么这个图形循环会冻结我的gui?

Java 为什么这个图形循环会冻结我的gui?,java,loops,user-interface,Java,Loops,User Interface,在我看来,这段代码看起来不错,但我真的不知道它是否好,因为它冻结了整个绘画循环。它以前工作得很好,没有那么多麻烦 int offsetX = 0; int offsetY = 0; for(int y = 0, canvasY = offsetY + y, x = 0, canvasX = offsetX + x; canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX; y

在我看来,这段代码看起来不错,但我真的不知道它是否好,因为它冻结了整个绘画循环。它以前工作得很好,没有那么多麻烦

    int offsetX = 0;
    int offsetY = 0;

    for(int y = 0, canvasY = offsetY + y, x = 0, canvasX = offsetX + x; canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX; y++, x++) {
            int tileToPaint = canvasX + (canvasY * mapWidth);
            tileObject = getObject(tileToPaint);
            int locationX = tileSize * x;
            int locationY = tileSize * y;
            draw(tileObject, locationX, locationY);
    }
int offsetX=0;
int offsetY=0;
对于(int y=0,canvasY=offsetY+y,x=0,canvasX=offsetX+x;canvasY
问题在于它是无限的

你的情况:

canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX

问题是它是无限的

你的情况:

canvasY < mapHeight + offsetY && canvasX < mapWidth + offsetX

什么框架?SWT、Swing、AWT。。。。?从它的声音中,你创造了一个无限的循环。尝试使用调试器检查变量的状态,并在循环结束时验证转义条件是否需要canvasY++和canvasX++。PS你的for语句做得太多了。那是for循环太疯狂了。For循环意味着简单易读。试着写一些你能读的代码。@ThomasW-说真的。。。这是我想对90%提出类似问题的老年退休金计划成员的评论。如果您真的使代码易于阅读,那么在过程中就很容易发现错误;-)什么框架?SWT、Swing、AWT。。。。?从它的声音中,你创造了一个无限的循环。尝试使用调试器检查变量的状态,并在循环结束时验证转义条件是否需要canvasY++和canvasX++。PS你的for语句做得太多了。那是for循环太疯狂了。For循环意味着简单易读。试着写一些你能读的代码。@ThomasW-说真的。。。这是我想对90%提出类似问题的老年退休金计划成员的评论。如果您真的使代码易于阅读,那么在过程中就很容易发现错误;-)这解决了无限循环,但它呈现出奇怪的ex。通常它是:0-0-0-0-0-0-0-0-0-0-0-0-0-0,但现在它就像0--0--0--0-抱歉解释得不好,这不是你的事:P@user2483938--写一个清晰的循环,你和其他人可以阅读并推断它的作用。这是你的错误和狡猾的代码,不是任何人的。@user2483938我为不能提供一个完全有效的答案而道歉。这是一个足够大的挑战,甚至尝试产生一个。@ThomasW是的,我不是说了吗?这解决了无限循环,但它呈现出奇怪的ex。通常是:0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-P@user2483938--写一个清晰的循环,你和其他人可以阅读并推断它的用途。这是你的错误和狡猾的代码,不是任何人的。@user2483938我为不能提供一个完全有效的答案而道歉。这是一个足够的挑战,甚至试图生产一个。@ThomasW是的,我刚才不是说了吗?