Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java而不是Jpanel绘制面板_Java_Panel - Fatal编程技术网

如何用Java而不是Jpanel绘制面板

如何用Java而不是Jpanel绘制面板,java,panel,Java,Panel,我对Java非常陌生,正在从事一个类项目——我需要在面板中绘制一些像素。我得到了面板的jar代码,现在我需要制作不同的轨迹——特别是,我需要创建一个围绕面板周长的像素轨迹,我需要创建一些圆 关于盒子,我已经做了一部分。我的像素从左上角开始,一直到右上角,沿着面板的右侧向下,然后有点疯狂-我不确定它是停在右下角还是低于面板本身的边界,但它没有完成周界的移动。我的代码是: import cs251.lab1.Display; public class Visualizer {

我对Java非常陌生,正在从事一个类项目——我需要在面板中绘制一些像素。我得到了面板的jar代码,现在我需要制作不同的轨迹——特别是,我需要创建一个围绕面板周长的像素轨迹,我需要创建一些圆

关于盒子,我已经做了一部分。我的像素从左上角开始,一直到右上角,沿着面板的右侧向下,然后有点疯狂-我不确定它是停在右下角还是低于面板本身的边界,但它没有完成周界的移动。我的代码是:

    import cs251.lab1.Display;

    public class Visualizer {

    private static final int PIXEL_SIZE = 50;

    public static void main(String[] args) {
    Display panel = new Display(10, PIXEL_SIZE);
    drawWrappingDots(panel);}
    public static void drawWrappingDots(Display panel) {
        int x = 1;
        int y = 1;
        while (x > 0 && y > 0){
        if (x < panel.getWidth()){
            panel.drawNextPixel(x, y);
            x++;
        }
        if (x == panel.getWidth()){
            panel.drawNextPixel(x, y);
            y++;
        }
        if (x > 0 && y == panel.getHeight()){
            panel.drawNextPixel(x, y);
            x--;
        }
        if (x == 0 && y == panel.getHeight()){
            panel.drawNextPixel(x, y);
            y--;
        }
我做错了什么

第二,我如何画一个圆?我知道它需要使用数学库,但我不知道该怎么做。非常感谢您在这方面的任何帮助。谢谢。

在循环过程中更改为:


也许,这不是完美的解决方案。

对于第一个问题,您可以使用多个if语句:

int x = 1; //x starts a little to the right of 0
int y = 0; //y starts at 0
while (x > 0 && y > 0){
    if (x < panel.getWidth() && y == 0){
        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--;
    }
    else {
        panel.drawNextPixel(x, y);
        y--;
    }
}
然后,使用三角法:

int deg = 0;
while ( deg <= 360 ) {
  x = middle + (int)(Math.cos(deg)*radius);
  y = middle + (int)(Math.sin(deg)*radius);
  panel.drawNextPixel(x, y);
  deg++;
}

这样就可以了。

执行y++时,x不应该重置为0吗?...左右
int middle = 50;
int radius = 20;
int deg = 0;
while ( deg <= 360 ) {
  x = middle + (int)(Math.cos(deg)*radius);
  y = middle + (int)(Math.sin(deg)*radius);
  panel.drawNextPixel(x, y);
  deg++;
}