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