package ip.gui.frames;
import java.awt.*;
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.util.Random;
public final class ColorGridFrame extends ClosableFrame {
private ColorGrid cgrid;
private Label label = new Label();
private Frame f;
private int r,g,b,a;
public static Font[] getAllFonts() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
return ge.getAllFonts();
}
public static Color getColor() {
return
javax.swing.JColorChooser.showDialog(
new Frame(), "Choose a color", Color.white);
}
public static void main(String args[]) {
System.out.println(getColor());
}
public ColorGridFrame(Frame f_) {
super("Color Grid");
f = f_;
ColorModel colorModel = Toolkit.getDefaultToolkit().getColorModel();
int bitsize = colorModel.getPixelSize();
if (colorModel instanceof IndexColorModel) {
cgrid = new ColorGrid(1 << bitsize);
for (int i = 0; i < 1 << bitsize; i++)
cgrid.setColor(i, colorModel.getRGB(i));
} else {
Random r = new Random();
cgrid = new ColorGrid(256);
for (int i = 0; i < 256; i++)
cgrid.setColor(i, r.nextInt());
} add("Center", cgrid);
add("North", label);
setSize(300, 300);
show();
}
}
class ColorGrid extends Canvas {
int rows, cols;
int colors[];
ColorGrid(int numColors) {
colors = new int[numColors];
cols = Math.min(16, numColors);
rows = (numColors - 1) / cols + 1;
}
void setColor(int i, int rgb) {
colors[i] = rgb;
}
int getRGB(int x, int y) {
Dimension r = getSize();
int cellW = r.width / cols;
int cellH = r.height / rows;
x /= cellW;
y /= cellH;
return colors[Math.min(colors.length - 1, y * cols + x)];
}
public void paint(Graphics g) {
Dimension rec = getSize();
int cellW = rec.width / cols;
int cellH = rec.height / rows;
for (int i = 0; i < colors.length; i++) {
int r = i / cols;
int c = i % cols;
g.setColor(new Color(colors[i]));
g.fillRect(c * cellW, r * cellH, cellW, cellH);
}
}
}