A canvas is an empty space-a starting point for complex interface elements such as a picture button. A canvas is a place to draw. You use it instead of just drawing to a panel, as in an applet, so you can take advantage of the Layout Manager's capability to keep your interface machine- independent.
Listing 17.25. Drawing to the screen and to a canvas.
import java.awt.*;
import java.applet.Applet;
public class canvas_example extends Applet
{
drawing_area drawing;
Graphics drawing_graphics;
public void init()
{
//Don't need to do this but we don't want the Canvas
//being resized by the
//Layout Manager. Layout Managers are discussed later in this chapter.
setLayout(null);
drawing = new drawing_area();
add(drawing);
}
public void paint(Graphics g)
{
//This is just here to show that you can combine direct drawing to
//the applet panel with Canvases
g.drawString("Hello, World!", 25, 125 );
}
}
//Can't have more than one public class in a source file but
//you can have several
//non-public ones
class drawing_area extends Canvas {
Font my_font;
drawing_area() {
//set up a font for this Canvas to use
my_font = new Font("TimesRoman", Font.BOLD,16);
//set the size of the Canvas
resize(100,100);
}
public void paint(Graphics g) {
//By overriding the paint method you can control what is
//drawn in a canvas. If you want to avoid flicker you might
//also want to override the update method as discussed in the
//animation section.
//Fill a rectangle with the default color, black
g.fillRect(0,0,100,100);
//set the foreground color to white so we can read the text
g.setColor(Color.white);
g.setFont(my_font);
g.drawString("this is a test", 10,50);
//Be careful and reset the color or the next time paint is called the
//rectangle will be filled with white and the text will be invisible
g.setColor(Color.black);
}
}
No comments:
Post a Comment