1 /* 2 * File: MyColorBoxes5.java 3 * 4 * Display built-in colors with labels, a 2D array, a nested loop, 5 * some constants, and a hashtable 6 * 7 * Copyright: Northeast Parallel Architectures Center 8 * 9 */ 10 11 import java.applet.Applet; 12 import java.awt.Graphics; 13 import java.awt.Color; 14 import java.awt.FontMetrics; 15 import java.util.Hashtable; 16 import java.util.Enumeration; 17 18 public class MyColorBoxes5 extends Applet { 19 20 // size of each color swatch: 21 private final int swatchSize = 70; 22 // whitespace around each color swatch: 23 private final int border = 15; 24 // total size, including whitespace: 25 private final int unitSize = swatchSize + 2*border; 26 // number of color swatches per row: 27 private final int cols = 4; 28 29 // A hashtable of colors: 30 private Hashtable colors = new Hashtable(); 31 32 public void init() { 33 colors.put( "black", Color.black ); 34 colors.put( "blue", Color.blue ); 35 colors.put( "cyan", Color.cyan ); 36 colors.put( "darkGray", Color.darkGray ); 37 colors.put( "gray", Color.gray ); 38 colors.put( "green", Color.green ); 39 colors.put( "lightGray", Color.lightGray ); 40 colors.put( "magenta", Color.magenta ); 41 colors.put( "orange", Color.orange ); 42 colors.put( "pink", Color.pink ); 43 colors.put( "red", Color.red ); 44 colors.put( "white", Color.white ); 45 colors.put( "yellow", Color.yellow ); 46 colors.put( "brown", new Color( 0xA5, 0x2A, 0x2A ) ); 47 colors.put( "turquoise", new Color( 0x40, 0xE0, 0xD0 ) ); 48 colors.put( "violet", new Color( 0xEE, 0x82, 0xEE ) ); 49 colors.put( "gold", new Color( 0xFF, 0xD7, 0x00 ) ); 50 colors.put( "darkBrown", new Color( 0x5C, 0x40, 0x33 ) ); 51 colors.put( "navy", new Color( 0x00, 0x00, 0x80 ) ); 52 colors.put( "darkPurple", new Color( 0x87, 0x1F, 0x78 ) ); 53 } 54 55 public void paint( Graphics g ) { 56 57 // local variables: 58 int x, y; 59 Color color; 60 String colorstring; 61 62 // vertical adjustment for color labels: 63 int descender = g.getFontMetrics().getDescent(); 64 65 // an enumeration of keys in the hashtable: 66 Enumeration colorstrings = colors.keys(); 67 68 // Draw rows of color boxes: 69 int rows = ( int ) Math.ceil( ( double ) colors.swatchSize()/cols ); 70 for ( int i = 0; i < rows; i++ ) { 71 y = border + unitSize*i; 72 for ( int j = 0; j < cols; j++ ) { 73 if ( !colorstrings.hasMoreElements() ) break; 74 colorstring = ( String ) colorstrings.nextElement(); 75 color = ( Color ) colors.get( colorstring ); 76 x = border + unitSize*j; 77 g.setColor( color ); 78 g.fillRect( x, y, swatchSize, swatchSize ); 79 g.setColor( Color.black ); 80 g.drawString( colorstring, x, y - descender ); 81 } 82 } 83 84 } 85 86 } 87