Как случайным образом перекрасить линии между тремя разными цветами

#java #colors #render

#java #Цвет #визуализация

Вопрос:

У меня работает каждая часть этой программы, за исключением цветов. Прямо сейчас я перерисовываю любой случайный цвет, и мне нужно, чтобы он окрашивал линии только в желтый, зеленый или синий. Может кто-нибудь направить меня в правильном направлении, пожалуйста?

`package ColoredLines;

 import java.awt.Graphics;
import java.util.Random;
import javax.swing.JPanel;
import java.awt.Color;

@SuppressWarnings("serial")
public class ColoredLines extends JPanel {
    private final Random rand = new Random();

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Random rand = new Random();

        super.paintComponent(g);
        this.setBackground(Color.BLACK);


        for(int i = 10; i < 410; i  = 20){
            for(int j = 0; j < 410; j  = 410){


                g.setColor(new Color(rand.nextInt(256), rand.nextInt(256), rand.nextInt(256)));
                g.fillRect(i, j, 10, 410);
                }
            }
        }

    }
`
  

Комментарии:

1. Создайте массив этих цветов и выполните случайный генератор для выбора между этими цветами

2. о, хорошо, спасибо. Я попробую это прямо сейчас.

3. Извините, если это глупый вопрос, но теперь у меня есть массив из 3 цветов, как бы я случайно вызвал его в своем цикле for?

4. может быть, вы могли бы выполнить цикл for и изменить на 3 и увеличить на 1

Ответ №1:

Создайте ArrayList из трех цветов: ArrayList<Color> colors = new ArrayList<Color>();

Добавьте три цвета с помощью: colors.add(new Color(r,g,b)

Чтобы выбрать случайный цвет, используя:

Random rand = new Random();
Color randomColor = colors[rand.nextInt(2)];

Примечание: в rand.nextInt(2); случайное число может быть равно 0, поэтому возможные числа равны трем (0,1,2).