Chapter: Java The Complete Reference - The Java Library - Introducing the AWT: Working with Windows, Graphics, and Text

| Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail |

Working with Color - AWT Java

Java supports color in a portable, device-independent fashion. The AWT color system allows you to specify any color you want.

Working with Color

Java supports color in a portable, device-independent fashion. The AWT color system allows you to specify any color you want. It then finds the best match for that color, given the limits of the display hardware currently executing your program or applet. Thus, your code does not need to be concerned with the differences in the way color is supported by various hardware devices. Color is encapsulated by the Color class.

 

As you saw in Chapter 23, Color defines several constants (for example, Color.black) to specify a number of common colors. You can also create your own colors, using one of the color constructors. Three commonly used forms are shown here:

 

Color(int red, int green, int blue) Color(int rgbValue)

Color(float red, float green, float blue)

 

The first constructor takes three integers that specify the color as a mix of red, green, and blue. These values must be between 0 and 255, as in this example:

new Color(255, 100, 100); // light red

The second color constructor takes a single integer that contains the mix of red, green, and blue packed into an integer. The integer is organized with red in bits 16 to 23, green in bits 8 to 15, and blue in bits 0 to 7. Here is an example of this constructor:

 

int newRed = (0xff000000 | (0xc0 << 16) | (0x00 << 8) | 0x00); Color darkRed = new Color(newRed);

 

The final constructor, Color(float, float, float), takes three float values (between 0.0 and 1.0) that specify the relative mix of red, green, and blue.

Once you have created a color, you can use it to set the foreground and/or background color by using the setForeground( ) and setBackground( ) methods described in Chapter 23. You can also select it as the current drawing color.

 

Color Methods

 

The Color class defines several methods that help manipulate colors. Several are examined here.

 

Using Hue, Saturation, and Brightness

 

The hue-saturation-brightness (HSB) color model is an alternative to red-green-blue (RGB) for specifying particular colors. Figuratively, hue is a wheel of color. The hue can be specified with a number between 0.0 and 1.0, which is used to obtain an angle into the color wheel. (The principal colors are approximately red, orange, yellow, green, blue, indigo, and violet.) Saturation is another scale ranging from 0.0 to 1.0, representing light pastels to intense hues. Brightness values also range from 0.0 to 1.0, where 1 is bright white and 0 is black. Color supplies two methods that let you convert between RGB and HSB. They are shown here:

 

static int HSBtoRGB(float hue, float saturation, float brightness) static float[ ] RGBtoHSB(int red, int green, int blue, float values[ ])

 

HSBtoRGB( ) returns a packed RGB value compatible with the Color(int) constructor. RGBtoHSB( ) returns a float array of HSB values corresponding to RGB integers. If values is not null, then this array is given the HSB values and returned. Otherwise, a new array is created and the HSB values are returned in it. In either case, the array contains the hue at index 0, saturation at index 1, and brightness at index 2.

 

getRed( ), getGreen( ), getBlue( )

 

You can obtain the red, green, and blue components of a color independently using getRed( ), getGreen( ), and getBlue( ), shown here:

 

int getRed( ) int getGreen( ) int getBlue( )

 

Each of these methods returns the RGB color component found in the invoking Color object in the lower 8 bits of an integer.

getRGB( )

 

To obtain a packed, RGB representation of a color, use getRGB( ), shown here: int getRGB( )

The return value is organized as described earlier.

 

Setting the Current Graphics Color

 

By default, graphics objects are drawn in the current foreground color. You can change this color by calling the Graphics method setColor( ) :

 

void setColor(Color newColor)

 

Here, newColor specifies the new drawing color.

 

You can obtain the current color by calling getColor( ), shown here: Color getColor( )

 

A Color Demonstration Applet

 

The following applet constructs several colors and draws various objects using these colors:

 

// Demonstrate color.

import java.awt.*; import java.applet.*; /*

 

<applet code="ColorDemo" width=300 height=200> </applet>

 

*/

 

public class ColorDemo extends Applet { // draw lines

 

public void paint(Graphics g) {

 

Color c1 = new Color(255, 100, 100); Color c2 = new Color(100, 255, 100); Color c3 = new Color(100, 100, 255);

 

g.setColor(c1); g.drawLine(0, 0, 100, 100); g.drawLine(0, 100, 100, 0);

 

g.setColor(c2); g.drawLine(40, 25, 250, 180); g.drawLine(75, 90, 400, 400);

 

g.setColor(c3); g.drawLine(20, 150, 400, 40); g.drawLine(5, 290, 80, 19);

g.setColor(Color.red); g.drawOval(10, 10, 50, 50);

illOval(70, 90, 140, 100);

g.setColor(Color.blue); g.drawOval(190, 10, 90, 30); g.drawRect(10, 10, 60, 50);

 

g.setColor(Color.cyan); g.fillRect(100, 10, 60, 50);

 

g.drawRoundRect(190, 10, 60, 50, 15, 15);

 

}

 

}

 

Study Material, Lecturing Notes, Assignment, Reference, Wiki description explanation, brief detail


Copyright © 2018-2020 BrainKart.com; All Rights Reserved. Developed by Therithal info, Chennai.