Java Programming: From Problem Analysis to Program Design, 4e Chapter 12 Advanced GUIs and Graphics
Java Programming: From Problem Analysis to Program Design, 4e 2
Chapter Objectives
• Learn about applets
• Explore the class Graphics• Learn about the class Font• Explore the class Color
Java Programming: From Problem Analysis to Program Design, 4e 3
Chapter Objectives (continued)
• Learn to use additional layout managers
• Become familiar with more GUI components
• Learn how to create menu-based programs
• Explore how to handle key and mouse events
Java Programming: From Problem Analysis to Program Design, 4e 4
Inheritance Hierarchy of GUI Classes
Java Programming: From Problem Analysis to Program Design, 4e 5
Constructors and Methods of the class Component
Java Programming: From Problem Analysis to Program Design, 4e 6
Constructors and Methods of the class Component (continued)
Java Programming: From Problem Analysis to Program Design, 4e 7
Constructors and Methods of the class Component (continued)
Java Programming: From Problem Analysis to Program Design, 4e 8
Constructors and Methods of the class Component (continued)
Java Programming: From Problem Analysis to Program Design, 4e 9
Constructors and Methods of the class Container
Java Programming: From Problem Analysis to Program Design, 4e 10
Applets
• Applet: a Java program that is embedded within a Web page and executed by a Web browser
• Create an applet by extending the class JApplet
• class JApplet contained in package javax.swing
Java Programming: From Problem Analysis to Program Design, 4e 12
Members of class Japplet (continued)
Java Programming: From Problem Analysis to Program Design, 4e 13
Applets (continued)
• No main method
• Methods init, start, and paint guaranteed to be invoked in sequence
• To develop an applet:– Override any/all of the methods above
Java Programming: From Problem Analysis to Program Design, 4e 14
Applet Methods
• init Method– Initializes variables– Gets data from user– Places various GUI components
• paint Method– Performs output
Java Programming: From Problem Analysis to Program Design, 4e 15
Skeleton of a Java Applet
import java.awt.Graphics;import javax.swing.JApplet;
public class WelcomeApplet extends JApplet{
}
Java Programming: From Problem Analysis to Program Design, 4e 16
Applet Displaying Welcome Message
//Welcome Applet import java.awt.Graphics;import javax.swing.JApplet;
public class WelcomeApplet extends JApplet{ public void paint(Graphics g) { super.paint(g); //Line 1 g.drawString("Welcome to Java Programming" , 30, 30); //Line 2 }}
Java Programming: From Problem Analysis to Program Design, 4e 18
class Font• Shows text in different fonts• Contained in package java.awt• Available fonts
– Serif/SanSerif– Monospaced– Dialog/DialogInput
• Arguments for constructor– String specifying the Font face name– int value specifying Font style – int value specifying Font size
• Expressed in points (72 points = 1 inch)
Java Programming: From Problem Analysis to Program Design, 4e 19
Constructors and Methods of the class Font
Java Programming: From Problem Analysis to Program Design, 4e 20
Constructors and Methods of the class Font (continued)
Java Programming: From Problem Analysis to Program Design, 4e 21
Constructors and Methods of the class Font (continued)
Java Programming: From Problem Analysis to Program Design, 4e 22
class Color
• Shows text in different colors
• Changes background color of component
• Contained in package java.awt
Java Programming: From Problem Analysis to Program Design, 4e 24
Constructors of the class Color (continued)
Java Programming: From Problem Analysis to Program Design, 4e 25
Constants Defined in the class Color
Java Programming: From Problem Analysis to Program Design, 4e 26
Constants Defined in the class Color (continued)
Java Programming: From Problem Analysis to Program Design, 4e 27
Constants Defined in the class Color (continued)
Java Programming: From Problem Analysis to Program Design, 4e 28
class Graphics
• Provides methods for drawing items such as lines, ovals, and rectangles on the screen
• Contains methods to set the properties of graphic elements including clipping area, fonts, and colors
• Contained in the package java.awt
Java Programming: From Problem Analysis to Program Design, 4e 29
Constructors and Methods of the class Graphics
Java Programming: From Problem Analysis to Program Design, 4e 30
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 31
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 32
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 33
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 34
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 35
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 36
Constructors and Methods of the class Graphics (continued)
Java Programming: From Problem Analysis to Program Design, 4e 37
Differences Between Applets and GUI Applications
• Applets – Derived from JApplet
– No main method– Uses init method – Displayed by HTML – Sets title in HTML– Size set in HTML– Applet closes when
HTML doc closes
• GUI applications– class extends JFrame– Invokes main method– Uses constructors– Uses method setVisible
– Uses setTitle method– Uses method setSize– Closes with Exit button
Java Programming: From Problem Analysis to Program Design, 4e 38
Converting a GUI Application to an Applet
• Change JFrame to JApplet
• Change constructor to method init• Remove method calls such as setVisible, setTitle, setSize
• Remove the method main
• If applicable, remove Exit button/all code associated with it (e.g., action listener)
Java Programming: From Problem Analysis to Program Design, 4e 39
Additional GUI Components
• JTextArea• JCheckBox• JRadioButton• JComboBox• JList
Java Programming: From Problem Analysis to Program Design, 4e 40
JTextArea
• Can collect multiple lines of input from user
• Can display multiple lines of output
• Pressing Enter key separates lines of text
• Each line ends with newline character ‘\n’• Derived from class JTextComponent
Java Programming: From Problem Analysis to Program Design, 4e 42
Methods Inherited by class JTextArea from Parent
class JTextComponent
Java Programming: From Problem Analysis to Program Design, 4e 44
JCheckBox
• User selects from predefined values
• Example of a toggle button
• Clicking JCheckBox generates item event
• Use interface ItemListener and its abstract method itemStateChanged to handle event
Java Programming: From Problem Analysis to Program Design, 4e 45
Constructors and Methods of class JCheckBox
Java Programming: From Problem Analysis to Program Design, 4e 46
Constructors and Methods of class JCheckBox (continued)
Java Programming: From Problem Analysis to Program Design, 4e 47
Constructors and Methods of class JCheckBox (continued)
Java Programming: From Problem Analysis to Program Design, 4e 48
Constructors and Methods of class JCheckBox (continued)
Java Programming: From Problem Analysis to Program Design, 4e 49
JRadioButton
• Created same way as check boxes
• Placed in content pane of applet
• Forces user to select only one radio button at a time
• You create a button group to group radio buttons
• Generates an ItemEvent• interface ItemListener and method itemStateChanged used to handle events
Java Programming: From Problem Analysis to Program Design, 4e 54
JComboBox
• Commonly known as a drop-down list
• Used to select an item from a list of possibilities
• Generates an ItemEvent
• Event monitored by ItemListener• ItemListener invokes method itemStateChanged
Java Programming: From Problem Analysis to Program Design, 4e 56
Applet with JCheckBox, JComboBox, and JRadioButton
Java Programming: From Problem Analysis to Program Design, 4e 58
Constructors of class Jlist (continued)
Java Programming: From Problem Analysis to Program Design, 4e 59
Constructors of class Jlist (continued)
Java Programming: From Problem Analysis to Program Design, 4e 60
Layout Managers• FlowLayout
– Default layout manager– Places components from left to right, center by default,
until no more items can be placed – Can align each line left, center, or right – Default alignment: LEFT
• GridLayout– Similar to FlowLayout– All rows (columns) have same number of components – All components have the same size
Java Programming: From Problem Analysis to Program Design, 4e 61
Layout Managers (continued)• BorderLayout
– Items placed into one of five specific regions• NORTH/SOUTH• EAST/WEST• CENTER
– NORTH and SOUTH components extend horizontally (completely span one edge to the other)
– EAST and WEST components extend vertically between components in NORTH and SOUTH regions
– CENTER component expands to occupy any unused regions
Java Programming: From Problem Analysis to Program Design, 4e 62
Menus
• Allow for various functions without cluttering GUI with too many components
• Can be attached to objects such as JFrame and JApplet (setJMenuBar method)
• To set a menu bar:private JMenuBar menuMB = new JMenuBar(); setJMenuBar(menuMB);
• Add menus to menu bar; add menu items to menu• Order of menus added = Order of appearance
Java Programming: From Problem Analysis to Program Design, 4e 64
Chapter Summary
• Creating applets• class Font• class Graphics• class Color• Differences between applet and GUI
application
• Converting GUI application to applet