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.