import java.awt.*;
import java.util.List;
import java.util.*;
import javax.swing.*;
public class KeyColors {
public static void main(String[] args) {
String s = "abcdefgh";
String[] keys = s.split("(?<=[\\w\\s])");
JPanel panel = new JPanel();
ColorKeys colorKeys = new ColorKeys();
for(int j = 0; j < keys.length; j++) {
Color color = colorKeys.getKeyColor();
panel.add(getLabel(keys[j], color));
}
JOptionPane.showMessageDialog(null, panel, "",
JOptionPane.PLAIN_MESSAGE);
}
private static JLabel getLabel(String s, Color color) {
JLabel label = new JLabel(s, JLabel.CENTER);
label.setForeground(color);
label.setPreferredSize(new Dimension(40,40));
label.setBorder(BorderFactory.createEtchedBorder());
return label;
}
}
class ColorKeys {
Random seed = new Random();
List colors = new ArrayList();
int inc = 51; // 216 unique colors
public Color getKeyColor() {
while(true) {
Color color = getColor();
if(!colors.contains(color)) {
colors.add(color);
return color;
}
}
}
private Color getColor() {
int[] n = new int[3];
for(int j = 0; j < 3; j++) {
n[j] = seed.nextInt(6);
}
return new Color(n[0]*inc, n[1]*inc, n[2]*inc);
}
}
Message was edited by:
crwood