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
      方法中对此进行迭代