Если я правильно понимаю вашу ситуацию, вам нужен целый ряд цветов, которые выглядят как бы "настолько разными, насколько это возможно"? В этом случае я бы предложил вам изменить значение оттенка (два красных цвета с немного отличающейся яркостью не будут сильно отличаться), поэтому вы получите что-то вроде «радуги-палитры»:
Это может быть достигнуто с помощью следующего кода:
Color[] cols = new Color[n];
for (int i = 0; i < n; i++)
cols[i] = Color.getHSBColor((float) i / n, 1, 1);
Пример использования со снимками экрана ниже:
import java.awt.*;
public class TestComponent extends JPanel {
int numCols = 6;
public void paint(Graphics g) {
float h = 0, dh = (float) getHeight() / numCols;
Color[] cols = getDifferentColors(numCols);
for (int i = 0; i < numCols; i++) {
g.setColor(cols[i]);
g.fillRect(0, (int) h, getWidth(), (int) (h += dh));
}
}
public static Color[] getDifferentColors(int n) {
Color[] cols = new Color[n];
for (int i = 0; i < n; i++)
cols[i] = Color.getHSBColor((float) i / n, 1, 1);
return cols;
}
public static void main(String s[]) {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new TestComponent());
f.setSize(200, 200);
f.setVisible(true);
}
}
numCols = 6
и numCols = 40
дают следующие два снимка экрана:

Если вам нужно более 30 цветов, вы, конечно, можете изменить яркость и, возможно, насыщенность, и иметь, например, 10 темных цветов, 10 цветов среднего тона и 10 ярких цветов.