用Java创建随机三角形

时间:2015-08-03 18:27:39

标签: java arrays graphics colors shapes

我需要创建一个生成五个随机三角形的程序,所有三角形都填充随机颜色。调整窗口大小时,还必须重绘三角形。问题是三角形根本没有出现,我只是得到一个灰色的盒子。我觉得我错过了一些明显的东西,比如缺少导入或在错误的地方排队,但我尝试多次调整代码无济于事。我有drawPolygon的数组都错了吗?我不知道 - 我真的需要一些帮助。

import java.awt.BasicStroke;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.util.Random;
import java.awt.Color;
import java.awt.Point;
import javax.swing.JPanel;
import javax.swing.JFrame;

 class RandomTriangles extends JPanel {
     public void paint(Graphics g) {
         super.paintComponent(g);
         Graphics2D g2d = (Graphics2D) g;
         float strokeThickness = 2.0f;

        BasicStroke stroke = new BasicStroke(strokeThickness,
                BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER);
        g2d.setStroke(stroke);

        Random randGen = new Random();
        int curHeight = this.getHeight();
        int curWidth = this.getWidth();

        int [] x = new int [3];
        int [] y = new int [3];

        for(int i = 0; i < 3; i++) {
            x[i] = randGen(curWidth);
            y[i] = randGen(curHeight);
        }

        for(int t = 0; t < 5; t++){
            g2d.fillPolygon(x, y, 3);
            g2d.setColor(new Color(randGen.nextInt(256),      randGen.nextInt(256), randGen.nextInt(256)));
        }

    }

    private int randGen(int curWidth) {
        // TODO Auto-generated method stub
        return 0;
    }
}

public class Triangles {
     public static void main(String[] args) {
         new Triangles();
    }

        Triangles() {
        JFrame frame = new JFrame("Triangles");

        frame.add(new RandomTriangles());

        frame.setSize(500, 500);
        frame.setVisible(true);
    }

}

1 个答案:

答案 0 :(得分:0)

首先,你创建一个Random对象,这很好!

    Random randGen = new Random();

但你永远不会使用它。相反,你打电话给randGen,你已经定义了一个功能

    for(int i = 0; i < 3; i++) {
        x[i] = randGen(curWidth);
        y[i] = randGen(curHeight);
    }

但randGen定义为始终返回0!您应该擦除该方法,并在循环调用中

    for(int i = 0; i < 3; i++) {
        x[i] = randGen.nextInt(curWidth);
        y[i] = randGen.nextInt(curHeight);
    }