Я создаю приложение, которое рисует aws 5 случайных треугольников разных случайных цветов. Случайное рисование треугольников работает, но по какой-то причине все треугольники имеют одинаковый цвет, иногда разные цвета в местах пересечения треугольников. Вот изображение:
изображение того, что приложение создает
Кто-нибудь знает, как решить эту проблему и сделать так, чтобы каждый треугольник был другого цвета?
ТреугольникиJPanel. java:
import javax.swing.JPanel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;
public class TrianglesJPanel extends JPanel
{
public void paintComponent(Graphics g) {
//call superclass's paintComponent
super.paintComponent(g);
Random random = new Random();
Graphics2D g2 = (Graphics2D) g;
GeneralPath triangle = new GeneralPath(); //create general path object
//get the height and width
int height = this.getHeight();
int width = this.getWidth();
int[] x = new int[3];
int[] y = new int[3];
//draw 5 random triangles in application frame that can be adjusted
for (int i = 0; i < 5; i++) {
//get random points on the panel
for (int j = 0; j < 3; j++) {
x[j] = random.nextInt(width + 1); //random number from 0 to width
y[j] = random.nextInt(height + 1); //random number from 0 to height
//Ex. Frame 500x500: x could be from 0 to 500, y from 0 to 500
}
triangle.moveTo(x[0], y[0]); //start pos
triangle.lineTo(x[1], y[1]); //2nd point
triangle.lineTo(x[2], y[2]); //3rd point
triangle.lineTo(x[0], y[0]); //back to start pos
triangle.closePath(); //close the triangle
System.out.println(g2.getColor());
//set random color for triangle
g2.setColor(new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256)));
g2.fill(triangle); //draw filled triangle
}
}
}
Треугольник. java:
import java.awt.Color;
import javax.swing.JFrame;
public class Triangles
{
public static void main(String args[]) {
//choose title
JFrame frame = new JFrame("Drawing random triangles");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//drawing done on JPanel, embedded in a JFrame
TrianglesJPanel triangle = new TrianglesJPanel();
frame.add(triangle); //add the triangles to frame
frame.setBackground(Color.WHITE); //set background of frame to white color
frame.setSize(500,500); //set frame size to 500x500
frame.setVisible(true); //display frame
}
}