import java.awt.*;
public class Anzeige extends Frame implements Runnable {
Thread proz;
Color farben [] = new Color[100];
Font schrift = new Font("Sans", Font.BOLD, 13);
String aktuellefarbe;
Anzeige () {
proz = new Thread (this, "Farben");
proz.start();
}
public void run() {
float farbton = 0;
for (int i = 0; i < farben.length; i++) {
farben[i] = Color.getHSBColor(farbton, (float) 1.0, (float) 1.0);
farbton += 0.01; // farbton ändert sich von 0.0 bis 1.0
// sättigung konstant 1.0
// helligkeit konstant 1.0
}
int i = 0;
Thread dieserproz = Thread.currentThread();
while (proz == dieserproz) {
setForeground(farben[i]);
aktuellefarbe = i + " " + farben[i];
try {
Thread.sleep(1000);
}
catch (InterruptedException ie) {
}
repaint();
i++;
if (i == farben.length) i=0;
}
}
public void paint (Graphics bs) {
bs.fillRect(20,50, 260,80);
bs.setColor(Color.black);
bs.setFont(schrift);
bs.drawString(aktuellefarbe, 20,40);
}
public static void main (String [] args) {
Anzeige proggi = new Anzeige();
proggi.setLocation(100,100);
proggi.setSize(300,150);
proggi.setTitle("Threads verwenden");
proggi.setVisible(true);
}
}
Zunächst wird ein Array mit 100 verschiedenen Farbwerten gefüllt, wobei für diese Farben der so genannte Farbton im ``HSB-Farbmodell (hue, saturation, brightness) in Hundertstelschritten zwischen 0 und 1 variiert wird. Anschließend wird aus diesem Array inkrementiell ein Wert ausgewählt, die Vordergrundfarbe gesetzt, das entsprechend eingefärbte Rechteck und der zugehörige Farbwert in RGB-Werten ausgegeben.