Field Trip #19 Animations with Java By Keith Lynn
Overview JButton JPanel LayoutManagers Events The paint method The Graphics object Threads Drawing a stick figure and making it move
JButton A JButton is a simple component that allows us to put a push button on a container It is found in the javax.swing package A JButton by default will have margins. If the label won't display, we can obtains the insets and change the left and right margin We can attach a listener to a JButton so that clicks are detected
JPanel A simple container that holds other containers It can be used to segment a larger frame into smaller independent pieces We can change the layout of the JPanel and it won't affect other Jpanels We can set the preferred size of a Jpanel with the method setPreferredSize which will accept a Dimension object. e.g. setPreferredSize(new Dimension(50,20));
LayoutManagers LayoutManagers define how components are layed out in a Container There are predefined LayoutManagers: FlowLayout (the components are layed out linearly), GridLayout (the components are layed out in a grid), GridBagLayout (allows us to assign weights to components so that they can take up more than one row or column) If we want to layout a Container ourselves, we can remove the LayoutManager by setting it to null
Events Events occur when we do something to a component, e.g. clicking a button In order to act on the event, we assign a listener to the component Typical listeners are ActionListener for button clicks and ItemListener for selections ActionListener and ItemListener are interfaces that require us to implement certain methods If a listener is properly registered, then the corresponding method will be called when the event happens
The paint method There is a special method inherited by components that allow us to draw on a Container JApplet and JFrame inherit the paint method Subclasses of JComponent, e.g. JPanel, inherit the paintComponent method which should be used instead of paint When a Component first becomes visible or is repainted, then the paint or paintComponent methods will be called if possible
The Graphics object The paint and paintComponent methods accept a parameter of type Graphics Graphics is an abstract class. Therefore we cannot create an instance of a Graphics object. We rely on the interpreter to create a Graphics object for us Using the Graphics objects, we can draw lines, rectangles, ovals and polygons
Threads When an applet is executed, something called a thread is created A thread is a line of execution We should not place a loop in the applet's thread because it will not be able to respond to events Instead we create a seperate thread
Threads con't Thread implements the Runnable interface To create a new Thread, we can Subclass Thread and override its run method Create a Runnable class, and then create a Thread using the class We should never call the run method directly In order to start a Thread we call the start method To keep a thread from running forever, we can use a boolean to determine how long it should run
Drawing a Stick Figure and Making it Move In order to make the stick figure appear to move, we draw several stick figures We then display each of those figures in order When we repeat this, the figure moves