在Java面板中绘图

时间:2014-08-24 17:15:26

标签: java panel draw

我是Java编程的新手,我给予的一个练习(我们被允许并鼓励寻求外部帮助)就是在Panel(而不是{{1}中绘制不同内容的像素}})。

我特别遇到两个问题,在面板周边追踪一行像素并创建一个spyrograph设计(跟踪一个圆周上的一个点,该圆围绕另一个圆周上的一个点旋转。)

我已经掌握了一些基本功能,但两者都存在问题。任何人都可以看到我的错误吗?

这是我的代码和问题:

围绕周边的

框 - 像素从左上角开始,从顶部到右角,向下到右下角,穿过底部到左角,然后卡在那里:

JPanel

现在,对于圈子上的圆圈 - 我看起来并不像它应该的那样 - 就像我上面提到的那样。它只是绘制一个圆圈,但我相信方程是正确的。我在这里做错了什么?

drawBox(panel);}

public static void drawBox(Display panel) {
    int x = 1;
    int y = 1;
    while (x != 0 && y != 0){
        if (x < panel.getWidth() && y == 1){
            panel.drawNextPixel(x, y);
            x++;
        }else if (x == panel.getWidth() && y != panel.getHeight()){
            panel.drawNextPixel(x, y);
            y++;
        }else if (x != 0 && y == panel.getHeight()){
            panel.drawNextPixel(x, y);
            x = x-1;
        }else if (x == 0 && y == panel.getHeight()){
            panel.drawNextPixel(x, y);
            y = y - 1;
        }
    }

1 个答案:

答案 0 :(得分:0)

所以,在第一个:

我想你可能打算放

else if (x == 0 && y != 0) {

表示最后一个if。

因为在您传递第3个if子句x == 0y == panel.getHeight()后,再经过1次迭代后,x == 0y == panel.getHeight() - 1。这些变量值不满足if子句和while exit子句,从而创建无限循环。上述if子句一直有效,直到y到达屏幕的上边缘。

仅供参考,这里有几个for循环会更好,因为你确切知道每行需要采取多少步骤。第一个if子句,或创建跨越顶部的行的那个子句将是:

for (int x = 0; x < panel.getWidth(); x ++) {
    panel.drawNextPixel(x, 0);

此外,x = x - 1相当于x --

对于第二个,我不太了解肺活量计,更不用说他们的方程了。尝试做一些研究并检查几个站点的方程式。 (This site 对你正在尝试做的事情似乎特别有帮助。)如果合适的话,还要考虑Marco13的建议并将变量更改为double