, Color. , , ; .
- , Color . ColorPanel , , , , . , R, G B, , . Color.
Color: java.awt.Color@grepcode.com
ColorPanel.java
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ColorPanel extends JPanel {
private static final long serialVersionUID = 2243743609739642647L;
private MyColor color;
private int state, r, g, b;
public ColorPanel() {
setPreferredSize(new Dimension(500, 300));
color = new MyColor(0xFF0000);
state = 0;
r = 255;
g = 0;
b = 0;
}
public void shitJustGotReal() {
try {
while (true) {
switch (state) {
case 0:
r -= 0xF;
if (r < 0) { r = 0; state = 1; g = 0xFF; }
color.setRed(r);
break;
case 1:
g -= 0xF;
if (g < 0) { g = 0; state = 2; b = 0xFF; }
color.setGreen(g);
break;
case 2:
b -= 0xF;
if (b < 0) { b = 0; state = 0; r = 0xFF; }
color.setBlue(b);
break;
}
repaint();
System.out.printf("%06X\n", color.getRGB());
Thread.sleep(100);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(color);
g.fillRect(0, 0, getWidth(), getHeight());
}
public static void main(String[] args) {
JFrame f = new JFrame("Chessboard");
ColorPanel c = new ColorPanel();
f.setContentPane(c);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.pack();
f.setVisible(true);
c.shitJustGotReal();
}
}
MyColor.java
import java.awt.Color;
public class MyColor extends Color {
private static final long serialVersionUID = 6892714783307773362L;
protected int value;
public MyColor(int rgb) {
super(rgb);
value = 0xFF000000 | rgb;
}
public MyColor(int r, int g, int b) {
this(r, g, b, 0xFF);
}
public MyColor(int r, int g, int b, int a) {
super(r, g, b, a);
setARGB(a, r, g, b);
}
public void setRed(int r) {
setRGB(r, getGreen(), getBlue());
}
public void setGreen(int g) {
setRGB(getRed(), g, getBlue());
}
public void setBlue(int b) {
setRGB(getRed(), getGreen(), b);
}
public void setARGB(int a, int r, int g, int b) {
value = ((a & 0xFF) << 24) |
((r & 0xFF) << 16) |
((g & 0xFF) << 8) |
((b & 0xFF) << 0);
}
public void setRGB(int r, int g, int b) {
setARGB(0xFF, r, g, b);
}
public void setRGB(int value) {
this.value = value;
}
@Override
public int getRGB() {
return value;
}
}