Java 在循环中绘制形状
所以我基本上只是想在改变颜色的同时在屏幕上画一整串随机的三角形,这看起来不是很难,但我找不到我的问题所在。。。它不会循环,它只显示一个图像这是我的Java 在循环中绘制形状,java,swing,Java,Swing,所以我基本上只是想在改变颜色的同时在屏幕上画一整串随机的三角形,这看起来不是很难,但我找不到我的问题所在。。。它不会循环,它只显示一个图像这是我的 import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import java.util.Random; import javax.swing.JFrame; public class ManyTriangles extends Canvas {
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;
import javax.swing.JFrame;
public class ManyTriangles extends Canvas {
public void paint(Graphics g) {
Random r = new Random();
int x1 = r.nextInt(350);
int x2 = r.nextInt(400);
int x3 = r.nextInt(300);
int y1 = r.nextInt(800);
int y2 = r.nextInt(200);
int y3 = r.nextInt(600);
int[] xpts = { x1, x2, x3 };
int[] ypts = { y1, y2, y3 };
int randomColor = r.nextInt(3);
for (int x = 0; x <= 500; x++) {
if (randomColor == 3) {
g.setColor(Color.green);
} else if (randomColor == 2) {
g.setColor(Color.red);
} else if (randomColor == 1) {
g.setColor(Color.blue);
}
g.fillPolygon(xpts, ypts, 3);
}
}
public static void main(String[] args) {
ManyTriangles canvas = new ManyTriangles();
JFrame frame = new JFrame("Lots of Triangle's");
frame.setSize(1024, 768);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(canvas);
frame.setVisible(true);
}
}
导入java.awt.Canvas;
导入java.awt.Color;
导入java.awt.Graphics;
导入java.util.Random;
导入javax.swing.JFrame;
公共类多三角形扩展画布{
公共空间涂料(图g){
随机r=新随机();
int x1=r.nextInt(350);
int x2=r.nextInt(400);
int x3=r.nextInt(300);
int y1=r.nextInt(800);
int y2=r.nextInt(200);
int y3=r.nextInt(600);
int[]xpts={x1,x2,x3};
int[]ypts={y1,y2,y3};
int randomColor=r.nextInt(3);
对于(int x=0;x
你的xpts
和yppts
在循环中永远不会改变,所以你在用不同的颜色一遍又一遍地画同一个东西
您没有调用super.paint
你在一个JFrame
上混合了重量重和重量轻的组件(Canvas
),这不是一个好主意
相反
将xpts
和yppts
的创建移动到循环中
在进行任何自定义绘制或活动之前,请调用super.paint
使用JPanel
而不是Canvas
并替代它的paintComponent
方法,确保在执行任何自定义绘制之前调用super.paintComponent
有关详细信息,请参见
其他问题。。。
- 由于每次调用
paint
时都会生成输出,因此输出可能会随机更改(因为重新绘制管理器会安排新的重新绘制请求)。如果您不想这样做,请在构造函数或其他方法中生成形状,将它们添加到某种列表
或数组中,并在paintComponent
方法中对此进行迭代
你的xpts
和yppts
在循环中永远不会改变,所以你在用不同的颜色一遍又一遍地画同一个东西
您没有调用super.paint
你在一个JFrame
上混合了重量重和重量轻的组件(Canvas
),这不是一个好主意
相反
将xpts
和yppts
的创建移动到循环中
在进行任何自定义绘制或活动之前,请调用super.paint
使用JPanel
而不是Canvas
并替代它的paintComponent
方法,确保在执行任何自定义绘制之前调用super.paintComponent
有关详细信息,请参见
其他问题。。。
- 由于每次调用
paint
时都会生成输出,因此输出可能会随机更改(因为重新绘制管理器会安排新的重新绘制请求)。如果您不想这样做,请在构造函数或其他方法中生成形状,将它们添加到某种列表
或数组中,并在paintComponent
方法中对此进行迭代
你的xpts
和yppts
在循环中永远不会改变,所以你在用不同的颜色一遍又一遍地画同一个东西
您没有调用super.paint
你在一个JFrame
上混合了重量重和重量轻的组件(Canvas
),这不是一个好主意
相反
将xpts
和yppts
的创建移动到循环中
在进行任何自定义绘制或活动之前,请调用super.paint
使用JPanel
而不是Canvas
并替代它的paintComponent
方法,确保在执行任何自定义绘制之前调用super.paintComponent
有关详细信息,请参见
其他问题。。。
- 由于每次调用
paint
时都会生成输出,因此输出可能会随机更改(因为重新绘制管理器会安排新的重新绘制请求)。如果您不想这样做,请在构造函数或其他方法中生成形状,将它们添加到某种列表
或数组中,并在paintComponent
方法中对此进行迭代
你的xpts
和yppts
在循环中永远不会改变,所以你在用不同的颜色一遍又一遍地画同一个东西
您没有调用super.paint
你在一个JFrame
上混合了重量重和重量轻的组件(Canvas
),这不是一个好主意
相反
将xpts
和yppts
的创建移动到循环中
在进行任何自定义绘制或活动之前,请调用super.paint
使用JPanel
而不是Canvas
并替代它的paintComponent
方法,确保在执行任何自定义绘制之前调用super.paintComponent
有关详细信息,请参见
其他问题。。。
- 由于每次调用
paint
时都会生成输出,因此输出可能会随机更改(因为重新绘制管理器会安排新的重新绘制请求)。如果您不想这样做,请在构造函数或其他方法中生成形状,将它们添加到某种列表
或数组中,并在paintComponent
方法中对此进行迭代