Java Reference
In-Depth Information
The
repaint
and
paint
Methods
When you change the graphic's contents in a window and want to update the window so
that the new contents show on the screen, do not call
paint
; call
repaint
. The
repaint
method takes care of some overhead and then calls the
paint
method. Normally, you do not
define
repaint
. As long as you define the
paint
method correctly, the
repaint
method
should work correctly. Note that you often define
paint
, but you normally do not call
paint
.
On the other hand, normally you do not define
repaint
, but you do sometimes call
repaint
.
Some More Details on Updating a GUI
★
Most of the changes to a GUI windowing system that we have seen are updated auto-
matically so that they are visible on the screen. This is done by an object known as the
repaint manager
. The repaint manager works automatically, and you need not even
be aware of its presence. However, there are a few updates that the repaint manager
will not do for you. You have already learned that you need an invocation of
repaint
when your GUI changes the figure drawn in the
JFrame
as in Display 18.17.
Two other updating methods that you will often see when looking at Swing code
are
validate
and
pack
.
Every container class has the method
validate
, which has no arguments. An invoca-
tion of
validate
causes the container to lay out its components again. An invocation of
validate
is a kind of “update” action that makes changes in the components actually
happen on the screen. Many simple changes that are made to a Swing GUI, like chang-
ing color or changing the text in a text field, happen automatically. Other changes, such
as some kinds of addition of components or changes in visibility, may require an invoca-
tion of
validate
or some other “update” method. Sometimes it is difficult to decide
whether an invocation of
validate
is necessary. When in doubt, include an invocation
of
validate
. Although invoking
validate
when it is not needed can make your pro-
gram a little less efficient, it will have no other ill effects on your GUI.
The method
pack
causes the window to be resized, usually to a smaller size, but more pre-
cisely to an approximation of a size known as the
preferred size.
(Yes, you can change the pre-
ferred size, but we do not have room to cover all of the Swing library in these few chapters.)
We do not have room in this topic to go into all the details of how a GUI is
updated on the screen, but these few remarks may make some code you find in more
advanced topics a little less puzzling.
repaint
manager
validate
pack
18.4
Colors
One colored picture is worth a thousand black and white pictures.
Variation on a Chinese proverb
In this section we tell you how to specify colors for the figures you draw with the graph-
ics methods. We also show you how to define your own colors using the class
Color
.