SlideShare a Scribd company logo
1 of 91
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
C HA PT E R 11
GUI
Applications
—Part 1
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Topics
Introduction
Dialog Boxes
Creating Windows
Layout Managers
Radio Buttons and Check Boxes
Borders
Focus on Problem Solving: Extending the
JPanel class
Splash Screens
Using Console Output to Debug a GUI
Application
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Introduction
Many Java application use a graphical user
interface or GUI (pronounced “gooey”).
A GUI is a graphical window or windows that
provide interaction with the user.
GUI’s accept input from:
the keyboard
a mouse.
A window in a GUI consists of components
that:
present data to the user
allow interaction with the application.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Introduction
Some common GUI components are:
buttons, labels, text fields, check boxes, radio
buttons, combo boxes, and sliders.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
JFC, AWT, Swing
Java programmers use the Java Foundation Classes
(JFC) to create GUI applications.
The JFC consists of several sets of classes, many of
which are beyond the scope of this book.
The two sets of JFC classes that we focus on are
AWT and Swing classes.
Java is equipped with a set of classes for drawing
graphics and creating graphical user interfaces.
These classes are part of the Abstract Windowing
Toolkit (AWT).
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
JFC, AWT, Swing
The AWT:
allows creation of applications and applets
with GUI components.
does not actually draw user interface
components on the screen.
communicates with a layer of software, peer
classes.
Each version of Java for a particular
operating system has its own set of peer
classes.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
JFC, AWT, Swing
Java programs using the AWT:
look consistent with other applications on the same
system.
can offer only components that are common to all the
operating systems that support Java.
The behavior of components across various operating
systems can differ.
Programmers cannot easily extend the AWT
components.
AWT components are commonly called heavyweight
components.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
JFC, AWT, Swing
Swing was introduced with the release of Java 2.
Swing is a library of classes that provide an
improved alternative for creating GUI applications
and applets.
Very few Swing classes rely on peer classes, so they
are referred to called lightweight components.
Swing draws most of its own components.
Swing components have a consistent look and
predictable behavior on any operating system.
Swing components can be easily extended.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
javax.swing and java.awt
In an application that uses Swing classes, it is
necessary to use the following statement:
import javax.swing.*;
Note the letter x that appears after the word java.
Some of the AWT classes are used to determine when
events, such as the clicking of a mouse, take place in
applications.
In an application that uses an AWT class, it is
necessary to use the following statement.
import java.awt.*;
Note that there is no x after java in this package name.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Event Driven Programming
Programs that operate in a GUI environment
must be event-driven.
An event is an action that takes place within
a program, such as the clicking of a button.
Part of writing a GUI application is creating
event listeners.
An event listener is an object that
automatically executes one of its methods
when a specific event occurs.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Dialog Boxes
A dialog box is a small graphical window that
displays a message to the user or requests
input.
A variety of dialog boxes can be displayed
using the JOptionPane class.
Message Dialog - a dialog box that displays a
message.
Input Dialog - a dialog box that prompts the
user for input.
Confirm Dialog This is a dialog box that asks
the user a Yes/No question.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Dialog Boxes
The JOptionPane class provides static
methods to display each type of dialog box.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
JOptionPane.showMessageDialog
method is used to display a message dialog.
There are several overloaded versions of this
method.
showMessageDialog(Component parent,
Object message)
showMessageDialog(Component parent,
Object message,
String title,
int messageType)
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
JOptionPane.showMessageDialog(null, "Hello World");
The first argument can be a reference to a graphical
component.
The dialog box is displayed inside that component.
If null is passed as the first argument, which causes the
dialog box to be displayed in the center of the screen.
The second argument is the message that is to be
displayed.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
By default the dialog box has:
the string “Message” displayed in its title bar, and
an information icon (showing the letter “i”) is displayed.
JOptionPane.showMessageDialog(null,
"Invalid Data",
"My Message Box",
JOptionPane.ERROR_MESSAGE);
The third option is the title bar text.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
These constants can be use to control
the icon that is displayed.
JOptionPane.ERROR_MESSAGE
JOptionPane.INFORMATION_MESSAGE
JOptionPane.WARNING_MESSAGE
JOptionPane.QUESTION_MESSAGE
JOptionPane.PLAIN_MESSAGE
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Message Dialogs
The dialog boxes displayed by the
JOptionPane class are modal dialog boxes.
A modal dialog box suspends execution of any
other statements until the dialog box is closed.
When the JOptionPane.showMessageDialog
method is called, the statements that appear
after the method call do not execute until the
user closes the message box.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Input Dialogs
• An input dialog is a quick and simple
way to ask the user to enter data.
• The dialog displays a text field, an Ok
button and a Cancel button.
• If Ok is pressed, the dialog returns the
user’s input.
• If Cancel is pressed, the dialog returns
null.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Input Dialogs
The JOptionPane has several overloaded
versions of the static showInputDialog
method.
Here are two of them:
showInputDialog(Object message)
showInputDialog(Component parent,
Object message,
String title,
int messageType)
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Input Dialogs
String name;
name = JOptionPane.showInputDialog("Enter your name.");
The argument passed to the method is the
message to display.
If the user clicks on the OK button, name
references the string entered by the user.
If the user clicks on the Cancel button, name
references null.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Input Dialogs
By default the input dialog box:
has the string “Input” in its title bar, and
displays a question icon.
String value;
value = JOptionPane.showInputDialog(null,
"Enter the value again.",
"Enter Carefully!",
JOptionPane.WARNING_MESSAGE);
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Confirm Dialog
A confirm dialog box typically asks the user a yes or
no question.
By default Yes, No, and Cancel buttons are displayed.
The showConfirmDialog method is used to display a
confirm dialog box.
There are several overloaded versions of this method.
int showConfirmDialog(Component parent,
Object message)
int showConfirmDialog(Component parent,
Object message,
String title,
int optionType)
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Confirm Dialog
int value;
value = JOptionPane.showConfirmDialog(null,
"Are you sure?");
By default the confirm dialog box displays:
“Select an Option” in its title bar,
Yes, No, and Cancel buttons.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Confirm Dialog
The showConfirmDialog method returns
an integer that represents the button clicked
by the user.
The button that was clicked is determined
by comparing the method’s return value to
one of the following constants:
JOptionPane.YES_OPTION
JOptionPane.NO_OPTION
JOptionPane.CANCEL_OPTION
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Confirm Dialog
int value;
value = JOptionPane.showConfirmDialog(null,
"Are you sure?");
if (value == JOptionPane.YES_OPTION){
//If the user clicked Yes, this code is executed.
}
else if (value == JOptionPane.NO_OPTION){
//If the user clicked no, this code is executed.
}
else if (value == JOptionPane.CANCEL_OPTION){
//If the user clicked Cancel, this code is executed.
}
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Confirm Dialog
int value;
value = JOptionPane.showConfirmDialog(null,
"Are you sure?",
"Please Confirm", JOptionPane.YES_NO_OPTION);
One of the following constants can be used
for the fourth parameter:
JOptionPane.YES_NO_OPTION
JOptionPane.YES_NO_CANCEL_OPTION
Example:
TestAverageDialog.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Stopping a GUI Program
A GUI program does not automatically
stop executing when the end of the
main method is reached.
Swing generates a thread, which is a
task running in the JVM.
If the System.exit method is not
called, this thread continues to
execute.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Stopping a GUI Program
The System.exit method requires an
integer argument.
System.exit(0);
This argument is an exit code that is passed
back to the operating system.
This code is usually ignored, however, it can
be used outside the program:
to indicate whether the program ended successfully
or as the result of a failure.
The value 0 traditionally indicates that the program
ended successfully.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
Often, applications need one or more
windows with various components.
A window is a container, which is simply a
component that holds other components.
A container that can be displayed as a
window is a frame.
In a Swing application, you create a frame
from the JFrame class.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
A frame is a basic window that has:
a border around it,
a title bar, and
a set of buttons for:
minimizing,
maximizing, and
closing the window.
These standard features are sometimes
referred to as window decorations.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
• See example: SimpleWindow.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
The following import statement is needed to use the
swing components:
import javax.swing.*;
In the main method, two constants are declared:
final int WINDOW_WIDTH = 350,
WINDOW_HEIGHT = 250;
We use these constants later in the program to set
the size of the window.
The window’s size is measured in pixels.
A pixel (picture element) is one of the small dots that
make up a screen display.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
An instance of the JFrame class needs to be created:
JFrame window = new JFrame("A Simple Window");
This statement:
creates a JFrame object in memory and
assigns its address to the window variable.
The string that is passed to the constructor will
appear in the window’s title bar when it is displayed.
A JFrame is initially invisible.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
To set the size of the window:
window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
To specify the action to take place when the user
clicks on the close button.
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
The setDefaultCloseOperation method takes an
int argument which specifies the action.
JFrame.HIDE_ON_CLOSE - causes the window to be
hidden from view, but the application does not end.
The default action is JFrame.HIDE_ON_CLOSE.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Creating Windows
The following code displays the
window:
window.setVisible(true);
The setVisible method takes a
boolean argument.
true - display the window.
false - hide the window.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Extending JFrame
We usually use inheritance to create a new class that
extends the JFrame class.
When a new class extends an existing class, it
inherits many of the existing class’s members just
as if they were part of the new class.
These members act just as if they were written into
the new class declaration.
New fields and methods can be declared in the new
class declaration.
This allows specialized methods and fields to be
added to your window.
Examples: SimpleWindow2.java, SimpleWindow2Demo.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Adding Components
Swing provides numerous components that
can be added to a window.
Three fundamental components are:
JLabel : An area that can display text.
JTextField : An area in which the user may type a
single line of input from the keyboard.
JButton : A button that can cause an action to
occur when it is clicked.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Sketch of Kilometer Converter
Graphical User Interface
Window Title
Label
Button
Text Field
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Adding Components
private JLabel messageLabel;
private JTextField kiloTextField;
private JButton calcButton;
…
messageLabel = new JLabel(
"Enter a distance in kilometers");
kiloTextField = new JTextField(10);
calcButton = new JButton("Calculate");
This code declares and instantiates
three Swing components.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Adding Components
A content pane is a container that is part of
every JFrame object.
Every component added to a JFrame must be
added to its content pane. You do this with
the JFrame class's add method.
The content pane is not visible and it does
not have a border.
A panel is also a container that can hold GUI
components.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Adding Components
Panels cannot be displayed by themselves.
Panels are commonly used to hold and
organize collections of related components.
Create panels with the JPanel class.
private JPanel panel;
…
panel = new JPanel();
panel.add(messageLabel);
panel.add(kiloTextField);
panel.add(calcButton);
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Adding Components
Components are typically placed on a panel
and then the panel is added to the JFrame's
content pane.
add(panel);
Examples: KiloConverterWindow.java, KilometerConverter.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Handling Action Events
An event is an action that takes place within a
program, such as the clicking of a button.
When an event takes place, the component that is
responsible for the event creates an event object in
memory.
The event object contains information about the event.
The component that generated the event object is
know as the event source.
It is possible that the source component is connected
to one or more event listeners.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Handling Action Events
An event listener is an object that responds to
events.
The source component fires an event which is
passed to a method in the event listener.
Event listener classes are specific to each
application.
Event listener classes are commonly written as
private inner classes in an application.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Writing Event Listener Classes as
Private Inner Classes
A class that is defined inside of another class
is known as an inner class
public class Outer
{
Fields and methods of the Outer class appear here.
private class Inner
{
Fields and methods of the Inner class appear here.
}
}
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Event Listeners Must
Implement an Interface
All event listener classes must
implement an interface.
An interface is something like a class
containing one or more method
headers.
When you write a class that
implements an interface, you are
agreeing that the class will have all of
the methods that are specified in the
interface.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Handling Action Events
JButton components generate action events, which
require an action listener class.
Action listener classes must meet the following
requirements:
It must implement the ActionListener interface.
It must have a method named actionPerformed.
The actionPerformed method takes an argument of the
ActionEvent type.
public void actionPerformed(ActionEvent e)
{
Code to be executed when button is pressed goes here.
}
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Handling Action Events
JButton Component Action Listener Object
void actionPerformed(ActionEvent e)
When the button is pressed …
Event
Object
The JButton component generates an event
object and passes it to the action listener
object's actionPerformed method.
Examples:
KiloConverterWindow.java, KilometerConverter.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Registering A Listener
The process of connecting an event listener
object to a component is called registering
the event listener.
JButton components have a method named
addActionListener.
calcButton.addActionListener(new
CalcButtonListener());
When the user clicks on the source button,
the action listener object’s
actionPerformed method will be executed.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Background and Foreground
Colors
Many of the Swing component classes have
methods named setBackground and
setForeground.
setBackground is used to change the color
of the component itself.
setForeground is used to change the color
of the text displayed on the component.
Each method takes a color constant as an
argument.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Color Constants
There are predefined constants that you can use for
colors.
Color.BLACK Color.BLUE
Color.CYAN Color.DARK_GRAY
Color.GRAY Color.GREEN
Color.LIGHT_GRAY Color.MAGENTA
Color.ORANGE Color.PINK
Color.RED Color.WHITE
Color.YELLOW
Examples: ColorWindow.java, ColorDemo.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
The ActionEvent Object
Event objects contain certain information
about the event.
This information can be obtained by calling
one of the event object’s methods.
Two of these methods are:
getSource - returns a reference to the object that
generated this event.
getActionCommand - returns the action command for
this event as a String.
Example:
EventObjectWindow.java, EventObjectDemo.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Equipping GUI Classes with a
main Method
Java applications always starts execution with a
method named main.
We have seen applications in two separate files, one
file for the class that defines the GUI window and
one file that contains the main method that creates
an object of the GUI window class.
Applications can also be written with the main
method directly written into the GUI class.
See example: EmbeddedMain.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Layout Managers
An important part of designing a GUI
application is determining the layout of the
components.
The term layout refers to the positioning and
sizing of components.
In Java, you do not normally specify the exact
location of a component within a window.
A layout manager is an object that:
controls the positions and sizes of components, and
makes adjustments when necessary.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Layout Managers
The layout manager object and the container work
together.
Java provides several layout managers:
FlowLayout - Arranges components in rows. This is
the default for panels.
BorderLayout - Arranges components in five
regions:
North, South, East, West, and Center.
This is the default layout manager for a JFrame
object’s content pane.
GridLayout - Arranges components in a grid with
rows and columns.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Layout Managers
The Container class is one of the base classes that
many components are derived from.
Any component that is derived from the Container
class can have a layout manager added to it.
You add a layout manager to a container by calling the
setLayout method.
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
In a JFrame constructor you might use:
setLayout(new FlowLayout());
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FlowLayout Manager
FlowLayout is the default layout
manager for JPanel objects.
Components appear horizontally,
from left to right, in the order that
they were added. When there is no
more room in a row, the next
components “flow” to the next row.
See example: FlowWindow.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FlowLayout Manager
The FlowLayout manager allows you to align
components:
in the center of each row
along the left or right edges of each row.
An overloaded constructor allows you to pass:
FlowLayout.CENTER,
FlowLayout.LEFT, or
FlowLayout.RIGHT.
Example:
setLayout(new FlowLayout(FlowLayout.LEFT));
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
FlowLayout Manager
FlowLayout inserts a gap of five pixels between
components, horizontally and vertically.
An overloaded FlowLayout constructor allows these
to be adjusted.
The constructor has the following format:
FlowLayout(int alignment,
int horizontalGap,
int verticalGap)
Example:
setLayout(new FlowLayout(FlowLayout.LEFT, 10, 7));
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
BorderLayout manages five regions
where components can be placed.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
See example: BorderWindow.java
A component placed into a container
that is managed by a BorderLayout
must be placed into one of five regions:
– BorderLayout.NORTH
– BorderLayout.SOUTH
– BorderLayout.EAST
– BorderLayout.WEST
– BorderLayout.CENTER
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
Each region can hold only one component at a time.
When a component is added to a region, it is
stretched so it fills up the entire region.
BorderLayout is the default manager for JFrame
objects.
add(button, BorderLayout.NORTH);
If you do not pass a second argument to the add
method, the component will be added to the center
region.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
Normally the size of a button is just
large enough to accommodate the text
that it displays
The buttons displayed in
BorderLayout region will not retain
their normal size.
The components are stretched to fill all
of the space in their regions.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
If the user resizes the window, the sizes of
the components will be changed as well.
BorderLayout manager resizes
components:
placed in the north or south regions may be resized
horizontally so it fills up the entire region,
placed in the east or west regions may be resized
vertically so it fills up the entire region.
A component that is placed in the center region may
be resized both horizontally and vertically so it fills up
the entire region.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
BorderLayout Manager
By default there is no gap between the
regions.
An overloaded BorderLayout constructor
allows horizontal and vertical gaps to be
specified (in pixels).
The constructor has the following format:
BorderLayout(int horizontalGap, int verticalGap)
Example:
setLayout(new BorderLayout(5,10));
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Nesting Components in a
Layout
Adding components to panels and then
nesting the panels inside the regions can
overcome the single component limitation of
layout regions.
By adding buttons to a JPanel and then
adding the JPanel object to a region,
sophisticated layouts can be achieved.
See example: BorderPanelWindow.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
GridLayout Manager
GridLayout creates a grid with rows and columns, much
like a spreadsheet. A container that is managed by a
GridLayout object is divided into equally sized cells.
columns
rows
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
GridLayout Manager
GridLayout manager follows some simple
rules:
Each cell can hold only one component.
All of the cells are the size of the largest
component placed within the layout.
A component that is placed in a cell is
automatically resized to fill up any extra space.
You pass the number of rows and columns as
arguments to the GridLayout constructor.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
GridLayout Manager
The general format of the constructor:
GridLayout(int rows, int columns)
Example
setLayout(new GridLayout(2, 3));
A zero (0) can be passed for one of the
arguments but not both.
passing 0 for both arguments will cause an
IllegalArgumentException to be thrown.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
GridLayout Manager
2524232221
2019181716
1514131211
109876
54321
Components are added to a GridLayout in the
following order (for a 5×5 grid):
Example:
GridWindow.java
GridLayout also accepts
nested components:
Example:
GridPanelWindow.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Radio Buttons
Radio buttons allow the user to select one choice from several
possible options.
The JRadioButton class is used to create radio buttons.
JRadioButton constructors:
JRadioButton(String text)
JRadioButton(String text, boolean selected)
Example:
JRadioButton radio1 = new JRadioButton("Choice 1");
or
JRadioButton radio1 = new JRadioButton("Choice 1", true);
Button appears
already selected
when true
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Button Groups
Radio buttons normally are grouped
together.
In a radio button group only one of the radio
buttons in the group may be selected at any
time.
Clicking on a radio button selects it and
automatically deselects any other radio
button in the same group.
An instance of the ButtonGroup class is a
used to group radio buttons
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Button Groups
The ButtonGroup object creates the
mutually exclusive relationship between the
radio buttons that it contains.
JRadioButton radio1 = new JRadioButton("Choice 1",true);
JRadioButton radio2 = new JRadioButton("Choice 2");
JRadioButton radio3 = new JRadioButton("Choice 3");
ButtonGroup group = new ButtonGroup();
group.add(radio1);
group.add(radio2);
group.add(radio3);
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Button Groups
ButtonGroup objects are not containers like
JPanel objects, or content frames.
If you wish to add the radio buttons to a
panel or a content frame, you must add them
individually.
panel.add(radio1);
panel.add(radio2);
panel.add(radio3);
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Radio Button Events
JRadioButton objects generate an
action event when they are clicked.
To respond to an action event, you
must write an action listener class, just
like a JButton event handler.
See example: MetricConverter.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Determining Selected Radio
Buttons
The JRadioButton class’s
isSelected method returns a boolean
value indicating if the radio button is
selected.
if (radio.isSelected())
{
// Code here executes if the radio
// button is selected.
}
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Selecting a Radio Button in
Code
It is also possible to select a radio button in
code with the JRadioButton class’s
doClick method.
When the method is called, the radio button
is selected just as if the user had clicked on
it.
As a result, an action event is generated.
radio.doClick();
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Check Boxes
A check box appears as a small box
with a label appearing next to it.
Like radio buttons, check boxes may
be selected or deselected at run time.
When a check box is selected, a small
check mark appears inside the box.
Check boxes are often displayed in
groups but they are not usually
grouped in a ButtonGroup.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Check Boxes
The user is allowed to select any or all of the
check boxes that are displayed in a group.
The JCheckBox class is used to create check
boxes.
Two JCheckBox constructors:
JCheckBox(String text)
JCheckBox(String text, boolean selected)
Example:
JCheckBox check1 = new JCheckBox("Macaroni");
or
JCheckBox check1 = new JCheckBox("Macaroni",true);
Check appears
in box if true
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Check Box Events
When a JCheckBox object is selected or
deselected, it generates an item event.
Handling item events is similar to handling
action events.
Write an item listener class, which must meet
the following requirements:
It must implement the ItemListener interface.
It must have a method named itemStateChanged.
This method must take an argument of the ItemEvent type.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Check Box Events
Create an object of the class
Register the item listener object with the
JCheckBox component.
On an event, the itemStateChanged
method of the item listener object is
automatically run
The event object is passed in as an argument.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Determining Selected Check
Boxes
The isSelected method will determine whether a
JCheckBox component is selected.
The method returns a boolean value.
if (checkBox.isSelected())
{
// Code here executes if the check
// box is selected.
}
See example: ColorCheckBoxWindow.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Selecting Check Boxes in
Code
It is possible to select check boxes in code
with the JCheckBox class’s doClick
method.
When the method is called, the check box is
selected just as if the user had clicked on it.
As a result, an item event is generated.
checkBox.doClick();
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Borders
Windows have a more organized look if
related components are grouped inside
borders.
You can add a border to any component that
is derived from the JComponent class.
Any component derived from JComponent inherits a
method named setBorder
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Borders
The setBorder method is used to add a
border to the component.
The setBorder method accepts a Border
object as its argument.
A Border object contains detailed
information describing the appearance of a
border.
The BorderFactory class, which is part of
the javax.swing package, has static
methods that return various types of borders.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Border BorderFactory Method Description
Compound
border
createCompoundBorder
A border that has two parts: an inside edge
and an outside edge. The inside and outside
edges can be any of the other borders.
Empty border createEmptyBorder A border that contains only empty space.
Etched border createEtchedBorder
A border with a 3D appearance that looks
“etched” into the background.
Line border createLineBorder A border that appears as a line.
Lowered bevel
border
createLoweredBevelBorder
A border that looks like beveled edges. It has
a 3D appearance that gives the illusion of
being sunken into the surrounding
background.
Matte border createMatteBorder
A line border that can have edges of different
thicknesses.
Raised bevel
border
createRaisedBevelBorder
A border that looks like beveled edges. It has
a 3D appearance that gives the illusion of
being raised above the surrounding
background.
Titled border createTitledBorder An etched border with a title.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
The Brandi’s Bagel House
Application
A complex application that uses numerous
components can be constructed from several
specialized panel components, each
containing other components and related
code such as event listeners.
Examples:
GreetingPanel.java, BagelPanel.java,
ToppingPanel.java, CoffeePanel.java,
OrderCalculatorGUI.java, Bagel.java
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Splash Screens
• A splash screen is a graphic image that
is displayed while an application loads
into memory and starts up.
• A splash screen keeps the user's
attention while a large application
loads and executes.
• Beginning with Java 6, you can display
splash screens with your Java
applications.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Splash Screens
To display the splash screen you use the
java command in the following way when
you run the application:
java -splash:GraphicFileName ClassFileName
GraphicFileName is the name of the file that contains
the graphic image, and ClassFileName is the name
of the .class fi le that you are running.
The graphic file can be in the GIF, PNG, or JPEG
formats.
Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Using Console Output to Debug a GUI
Display variable values, etc. as your application executes to
identify logic errors
Use System.out.println()
// For debugging, display the text entered,
and
// its value converted to a double.
System.out.println("Reading " + str +
" from the text field.");
System.out.println("Converted value: " +
Double.parseDouble(str));
See example: KiloConverterWindow.java

More Related Content

What's hot

Igor Cernopolc - Http authentication in automated testing - presentation script
Igor Cernopolc - Http authentication in automated testing - presentation scriptIgor Cernopolc - Http authentication in automated testing - presentation script
Igor Cernopolc - Http authentication in automated testing - presentation scriptCodecamp Romania
 
Dev101
Dev101Dev101
Dev101konnis
 
Edition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackEdition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackNicolas Dupont
 
Accessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryAccessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryRuss Weakley
 
Swift 2.0: Apple’s Advanced Programming Platform for Developers
Swift 2.0: Apple’s Advanced Programming Platform for DevelopersSwift 2.0: Apple’s Advanced Programming Platform for Developers
Swift 2.0: Apple’s Advanced Programming Platform for DevelopersAzilen Technologies Pvt. Ltd.
 
Part 5 running java applications
Part 5 running java applicationsPart 5 running java applications
Part 5 running java applicationstechbed
 
Diving into VS 2015 Day1
Diving into VS 2015 Day1Diving into VS 2015 Day1
Diving into VS 2015 Day1Akhil Mittal
 
What are accessible names and why should you care?
What are accessible names and why should you care?What are accessible names and why should you care?
What are accessible names and why should you care?Russ Weakley
 
Java applets and working principles
Java applets and working principlesJava applets and working principles
Java applets and working principlesDAZZLING DAZZLING
 
Java applet basics
Java applet basicsJava applet basics
Java applet basicsSunil Pandey
 
Creating Acessible floating labels
Creating Acessible floating labelsCreating Acessible floating labels
Creating Acessible floating labelsRuss Weakley
 
Accessible Form Hints and Errors
Accessible Form Hints and ErrorsAccessible Form Hints and Errors
Accessible Form Hints and ErrorsRuss Weakley
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformTonny Madsen
 
Accessible Inline errors messages
Accessible Inline errors messagesAccessible Inline errors messages
Accessible Inline errors messagesRuss Weakley
 

What's hot (19)

Igor Cernopolc - Http authentication in automated testing - presentation script
Igor Cernopolc - Http authentication in automated testing - presentation scriptIgor Cernopolc - Http authentication in automated testing - presentation script
Igor Cernopolc - Http authentication in automated testing - presentation script
 
Dev101
Dev101Dev101
Dev101
 
Edition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedbackEdition of an enterprise software in PHP, feedback
Edition of an enterprise software in PHP, feedback
 
Easymock tutorial
Easymock tutorialEasymock tutorial
Easymock tutorial
 
Accessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and gloryAccessibility in Design systems - the pain and glory
Accessibility in Design systems - the pain and glory
 
Swift 2.0: Apple’s Advanced Programming Platform for Developers
Swift 2.0: Apple’s Advanced Programming Platform for DevelopersSwift 2.0: Apple’s Advanced Programming Platform for Developers
Swift 2.0: Apple’s Advanced Programming Platform for Developers
 
Part 5 running java applications
Part 5 running java applicationsPart 5 running java applications
Part 5 running java applications
 
Diving into VS 2015 Day1
Diving into VS 2015 Day1Diving into VS 2015 Day1
Diving into VS 2015 Day1
 
What are accessible names and why should you care?
What are accessible names and why should you care?What are accessible names and why should you care?
What are accessible names and why should you care?
 
Part1
Part1Part1
Part1
 
Java applets and working principles
Java applets and working principlesJava applets and working principles
Java applets and working principles
 
Android app development guide for freshers by ace web academy
Android app development guide for freshers  by ace web academyAndroid app development guide for freshers  by ace web academy
Android app development guide for freshers by ace web academy
 
Java applet basics
Java applet basicsJava applet basics
Java applet basics
 
Elixir tutorial
Elixir tutorialElixir tutorial
Elixir tutorial
 
Creating Acessible floating labels
Creating Acessible floating labelsCreating Acessible floating labels
Creating Acessible floating labels
 
Accessible Form Hints and Errors
Accessible Form Hints and ErrorsAccessible Form Hints and Errors
Accessible Form Hints and Errors
 
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application PlatformEclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
Eclipse Banking Day in Copenhagen - Eclipse RCP as an Application Platform
 
New Introductionfor Flash Designers
New Introductionfor Flash DesignersNew Introductionfor Flash Designers
New Introductionfor Flash Designers
 
Accessible Inline errors messages
Accessible Inline errors messagesAccessible Inline errors messages
Accessible Inline errors messages
 

Viewers also liked

Eo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eEo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eGina Bullock
 
Eo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eEo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eGina Bullock
 
Eo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eEo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eGina Bullock
 
Eo gaddis java_chapter_11_5e
Eo gaddis java_chapter_11_5eEo gaddis java_chapter_11_5e
Eo gaddis java_chapter_11_5eGina Bullock
 
Eo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eEo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eGina Bullock
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eGina Bullock
 
Eo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eEo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eGina Bullock
 
Eo gaddis java_chapter_14_5e
Eo gaddis java_chapter_14_5eEo gaddis java_chapter_14_5e
Eo gaddis java_chapter_14_5eGina Bullock
 
Eo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eEo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eGina Bullock
 
Eo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eEo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eGina Bullock
 
Eo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eEo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eGina Bullock
 

Viewers also liked (11)

Eo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eEo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5e
 
Eo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eEo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5e
 
Eo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eEo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5e
 
Eo gaddis java_chapter_11_5e
Eo gaddis java_chapter_11_5eEo gaddis java_chapter_11_5e
Eo gaddis java_chapter_11_5e
 
Eo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5eEo gaddis java_chapter_12_5e
Eo gaddis java_chapter_12_5e
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5e
 
Eo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eEo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5e
 
Eo gaddis java_chapter_14_5e
Eo gaddis java_chapter_14_5eEo gaddis java_chapter_14_5e
Eo gaddis java_chapter_14_5e
 
Eo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eEo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5e
 
Eo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eEo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5e
 
Eo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eEo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5e
 

Similar to Eo gaddis java_chapter_11_5e

Cso gaddis java_chapter7
Cso gaddis java_chapter7Cso gaddis java_chapter7
Cso gaddis java_chapter7mlrbrown
 
What are Clickers?
What are Clickers?What are Clickers?
What are Clickers?smceuen
 
Transforming Power Point Show with VBA
Transforming Power Point Show with VBATransforming Power Point Show with VBA
Transforming Power Point Show with VBADCPS
 
Javadocx j option pane
Javadocx j option paneJavadocx j option pane
Javadocx j option paneFarwa Ansari
 
iOS Development at Scale @Chegg
iOS Development at Scale @CheggiOS Development at Scale @Chegg
iOS Development at Scale @CheggGalOrlanczyk
 
Copy of Buyers Journey v1.0.2.docx - Presentation.pptx
Copy of Buyers Journey v1.0.2.docx - Presentation.pptxCopy of Buyers Journey v1.0.2.docx - Presentation.pptx
Copy of Buyers Journey v1.0.2.docx - Presentation.pptxSoFl2
 
UI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsUI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsCodrina Merigo
 
Interface Design
Interface DesignInterface Design
Interface Designgavhays
 
Accessibility: A Journey to Accessible Rich Components
Accessibility: A Journey to Accessible Rich ComponentsAccessibility: A Journey to Accessible Rich Components
Accessibility: A Journey to Accessible Rich ComponentsAchievers Tech
 
ACPET online session2
ACPET online session2ACPET online session2
ACPET online session2Yum Studio
 
Developers Border Line: Unit Testing
Developers Border Line: Unit TestingDevelopers Border Line: Unit Testing
Developers Border Line: Unit TestingSikandar Ahmed
 
Debugging application using visual studio 2010 and intellitrace
Debugging application using visual studio 2010 and intellitraceDebugging application using visual studio 2010 and intellitrace
Debugging application using visual studio 2010 and intellitraceAbhimanyu Singhal
 
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docx
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docxModule Six Assignment Guidelines and Rubric.htmlOverviewMa.docx
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docxroushhsiu
 
Testing Options in Java
Testing Options in JavaTesting Options in Java
Testing Options in JavaMichael Fons
 
Lect02 Introducing Programming.ppt
Lect02 Introducing Programming.pptLect02 Introducing Programming.ppt
Lect02 Introducing Programming.pptNourhanTarek23
 
Alexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extraAlexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extrarit2010
 
Computer Programming NC III - Java Swing.pptx
Computer Programming NC III - Java Swing.pptxComputer Programming NC III - Java Swing.pptx
Computer Programming NC III - Java Swing.pptxjonathancapitulo2
 

Similar to Eo gaddis java_chapter_11_5e (20)

Cso gaddis java_chapter7
Cso gaddis java_chapter7Cso gaddis java_chapter7
Cso gaddis java_chapter7
 
What are Clickers?
What are Clickers?What are Clickers?
What are Clickers?
 
Java Swing
Java SwingJava Swing
Java Swing
 
Transforming Power Point Show with VBA
Transforming Power Point Show with VBATransforming Power Point Show with VBA
Transforming Power Point Show with VBA
 
Javadocx j option pane
Javadocx j option paneJavadocx j option pane
Javadocx j option pane
 
iOS Development at Scale @Chegg
iOS Development at Scale @CheggiOS Development at Scale @Chegg
iOS Development at Scale @Chegg
 
Copy of Buyers Journey v1.0.2.docx - Presentation.pptx
Copy of Buyers Journey v1.0.2.docx - Presentation.pptxCopy of Buyers Journey v1.0.2.docx - Presentation.pptx
Copy of Buyers Journey v1.0.2.docx - Presentation.pptx
 
UI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms AppsUI Testing for Your Xamarin.Forms Apps
UI Testing for Your Xamarin.Forms Apps
 
Interface Design
Interface DesignInterface Design
Interface Design
 
Accessibility: A Journey to Accessible Rich Components
Accessibility: A Journey to Accessible Rich ComponentsAccessibility: A Journey to Accessible Rich Components
Accessibility: A Journey to Accessible Rich Components
 
Edx presentation.pptx
Edx presentation.pptxEdx presentation.pptx
Edx presentation.pptx
 
ACPET online session2
ACPET online session2ACPET online session2
ACPET online session2
 
Demystify Accessibility
Demystify AccessibilityDemystify Accessibility
Demystify Accessibility
 
Developers Border Line: Unit Testing
Developers Border Line: Unit TestingDevelopers Border Line: Unit Testing
Developers Border Line: Unit Testing
 
Debugging application using visual studio 2010 and intellitrace
Debugging application using visual studio 2010 and intellitraceDebugging application using visual studio 2010 and intellitrace
Debugging application using visual studio 2010 and intellitrace
 
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docx
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docxModule Six Assignment Guidelines and Rubric.htmlOverviewMa.docx
Module Six Assignment Guidelines and Rubric.htmlOverviewMa.docx
 
Testing Options in Java
Testing Options in JavaTesting Options in Java
Testing Options in Java
 
Lect02 Introducing Programming.ppt
Lect02 Introducing Programming.pptLect02 Introducing Programming.ppt
Lect02 Introducing Programming.ppt
 
Alexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extraAlexandre.iline rit 2010 java_fxui_extra
Alexandre.iline rit 2010 java_fxui_extra
 
Computer Programming NC III - Java Swing.pptx
Computer Programming NC III - Java Swing.pptxComputer Programming NC III - Java Swing.pptx
Computer Programming NC III - Java Swing.pptx
 

More from Gina Bullock

Eo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eEo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eGina Bullock
 
Eo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eEo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eGina Bullock
 
Eo gaddis java_chapter_07_5e
Eo gaddis java_chapter_07_5eEo gaddis java_chapter_07_5e
Eo gaddis java_chapter_07_5eGina Bullock
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eGina Bullock
 
Eo gaddis java_chapter_16_5e
Eo gaddis java_chapter_16_5eEo gaddis java_chapter_16_5e
Eo gaddis java_chapter_16_5eGina Bullock
 
Eo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eEo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eGina Bullock
 
Eo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eEo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eGina Bullock
 
Eo gaddis java_chapter_02_5e
Eo gaddis java_chapter_02_5eEo gaddis java_chapter_02_5e
Eo gaddis java_chapter_02_5eGina Bullock
 
Eo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eEo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eGina Bullock
 
Eo gaddis java_chapter_03_5e
Eo gaddis java_chapter_03_5eEo gaddis java_chapter_03_5e
Eo gaddis java_chapter_03_5eGina Bullock
 
Eo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eEo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eGina Bullock
 
Eo gaddis java_chapter_06_Classes and Objects
Eo gaddis java_chapter_06_Classes and ObjectsEo gaddis java_chapter_06_Classes and Objects
Eo gaddis java_chapter_06_Classes and ObjectsGina Bullock
 

More from Gina Bullock (12)

Eo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5eEo gaddis java_chapter_06_5e
Eo gaddis java_chapter_06_5e
 
Eo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5eEo gaddis java_chapter_10_5e
Eo gaddis java_chapter_10_5e
 
Eo gaddis java_chapter_07_5e
Eo gaddis java_chapter_07_5eEo gaddis java_chapter_07_5e
Eo gaddis java_chapter_07_5e
 
Eo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5eEo gaddis java_chapter_01_5e
Eo gaddis java_chapter_01_5e
 
Eo gaddis java_chapter_16_5e
Eo gaddis java_chapter_16_5eEo gaddis java_chapter_16_5e
Eo gaddis java_chapter_16_5e
 
Eo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5eEo gaddis java_chapter_09_5e
Eo gaddis java_chapter_09_5e
 
Eo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5eEo gaddis java_chapter_08_5e
Eo gaddis java_chapter_08_5e
 
Eo gaddis java_chapter_02_5e
Eo gaddis java_chapter_02_5eEo gaddis java_chapter_02_5e
Eo gaddis java_chapter_02_5e
 
Eo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5eEo gaddis java_chapter_05_5e
Eo gaddis java_chapter_05_5e
 
Eo gaddis java_chapter_03_5e
Eo gaddis java_chapter_03_5eEo gaddis java_chapter_03_5e
Eo gaddis java_chapter_03_5e
 
Eo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5eEo gaddis java_chapter_04_5e
Eo gaddis java_chapter_04_5e
 
Eo gaddis java_chapter_06_Classes and Objects
Eo gaddis java_chapter_06_Classes and ObjectsEo gaddis java_chapter_06_Classes and Objects
Eo gaddis java_chapter_06_Classes and Objects
 

Recently uploaded

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Sapana Sha
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Krashi Coaching
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon AUnboundStockton
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting DataJhengPantaleon
 
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptx
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptxENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptx
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptxAnaBeatriceAblay2
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentInMediaRes1
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...Marc Dusseiller Dusjagr
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonJericReyAuditor
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTiammrhaywood
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)eniolaolutunde
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaVirag Sontakke
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxsocialsciencegdgrohi
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsKarinaGenton
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerunnathinaik
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsanshu789521
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxpboyjonauth
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Educationpboyjonauth
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformChameera Dedduwage
 

Recently uploaded (20)

Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111Call Girls in Dwarka Mor Delhi Contact Us 9654467111
Call Girls in Dwarka Mor Delhi Contact Us 9654467111
 
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
Kisan Call Centre - To harness potential of ICT in Agriculture by answer farm...
 
Crayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon ACrayon Activity Handout For the Crayon A
Crayon Activity Handout For the Crayon A
 
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data_Math 4-Q4 Week 5.pptx Steps in Collecting Data
_Math 4-Q4 Week 5.pptx Steps in Collecting Data
 
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptx
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptxENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptx
ENGLISH5 QUARTER4 MODULE1 WEEK1-3 How Visual and Multimedia Elements.pptx
 
Alper Gobel In Media Res Media Component
Alper Gobel In Media Res Media ComponentAlper Gobel In Media Res Media Component
Alper Gobel In Media Res Media Component
 
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
“Oh GOSH! Reflecting on Hackteria's Collaborative Practices in a Global Do-It...
 
Science lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lessonScience lesson Moon for 4th quarter lesson
Science lesson Moon for 4th quarter lesson
 
9953330565 Low Rate Call Girls In Rohini Delhi NCR
9953330565 Low Rate Call Girls In Rohini  Delhi NCR9953330565 Low Rate Call Girls In Rohini  Delhi NCR
9953330565 Low Rate Call Girls In Rohini Delhi NCR
 
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPTECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
ECONOMIC CONTEXT - LONG FORM TV DRAMA - PPT
 
Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)Software Engineering Methodologies (overview)
Software Engineering Methodologies (overview)
 
Painted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of IndiaPainted Grey Ware.pptx, PGW Culture of India
Painted Grey Ware.pptx, PGW Culture of India
 
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptxHistory Class XII Ch. 3 Kinship, Caste and Class (1).pptx
History Class XII Ch. 3 Kinship, Caste and Class (1).pptx
 
Science 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its CharacteristicsScience 7 - LAND and SEA BREEZE and its Characteristics
Science 7 - LAND and SEA BREEZE and its Characteristics
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
internship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developerinternship ppt on smartinternz platform as salesforce developer
internship ppt on smartinternz platform as salesforce developer
 
Presiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha electionsPresiding Officer Training module 2024 lok sabha elections
Presiding Officer Training module 2024 lok sabha elections
 
Introduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptxIntroduction to AI in Higher Education_draft.pptx
Introduction to AI in Higher Education_draft.pptx
 
Introduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher EducationIntroduction to ArtificiaI Intelligence in Higher Education
Introduction to ArtificiaI Intelligence in Higher Education
 
A Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy ReformA Critique of the Proposed National Education Policy Reform
A Critique of the Proposed National Education Policy Reform
 

Eo gaddis java_chapter_11_5e

  • 1. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley C HA PT E R 11 GUI Applications —Part 1
  • 2. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Topics Introduction Dialog Boxes Creating Windows Layout Managers Radio Buttons and Check Boxes Borders Focus on Problem Solving: Extending the JPanel class Splash Screens Using Console Output to Debug a GUI Application
  • 3. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Introduction Many Java application use a graphical user interface or GUI (pronounced “gooey”). A GUI is a graphical window or windows that provide interaction with the user. GUI’s accept input from: the keyboard a mouse. A window in a GUI consists of components that: present data to the user allow interaction with the application.
  • 4. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Introduction Some common GUI components are: buttons, labels, text fields, check boxes, radio buttons, combo boxes, and sliders.
  • 5. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley JFC, AWT, Swing Java programmers use the Java Foundation Classes (JFC) to create GUI applications. The JFC consists of several sets of classes, many of which are beyond the scope of this book. The two sets of JFC classes that we focus on are AWT and Swing classes. Java is equipped with a set of classes for drawing graphics and creating graphical user interfaces. These classes are part of the Abstract Windowing Toolkit (AWT).
  • 6. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley JFC, AWT, Swing The AWT: allows creation of applications and applets with GUI components. does not actually draw user interface components on the screen. communicates with a layer of software, peer classes. Each version of Java for a particular operating system has its own set of peer classes.
  • 7. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley JFC, AWT, Swing Java programs using the AWT: look consistent with other applications on the same system. can offer only components that are common to all the operating systems that support Java. The behavior of components across various operating systems can differ. Programmers cannot easily extend the AWT components. AWT components are commonly called heavyweight components.
  • 8. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley JFC, AWT, Swing Swing was introduced with the release of Java 2. Swing is a library of classes that provide an improved alternative for creating GUI applications and applets. Very few Swing classes rely on peer classes, so they are referred to called lightweight components. Swing draws most of its own components. Swing components have a consistent look and predictable behavior on any operating system. Swing components can be easily extended.
  • 9. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley javax.swing and java.awt In an application that uses Swing classes, it is necessary to use the following statement: import javax.swing.*; Note the letter x that appears after the word java. Some of the AWT classes are used to determine when events, such as the clicking of a mouse, take place in applications. In an application that uses an AWT class, it is necessary to use the following statement. import java.awt.*; Note that there is no x after java in this package name.
  • 10. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Event Driven Programming Programs that operate in a GUI environment must be event-driven. An event is an action that takes place within a program, such as the clicking of a button. Part of writing a GUI application is creating event listeners. An event listener is an object that automatically executes one of its methods when a specific event occurs.
  • 11. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dialog Boxes A dialog box is a small graphical window that displays a message to the user or requests input. A variety of dialog boxes can be displayed using the JOptionPane class. Message Dialog - a dialog box that displays a message. Input Dialog - a dialog box that prompts the user for input. Confirm Dialog This is a dialog box that asks the user a Yes/No question.
  • 12. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Dialog Boxes The JOptionPane class provides static methods to display each type of dialog box.
  • 13. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs JOptionPane.showMessageDialog method is used to display a message dialog. There are several overloaded versions of this method. showMessageDialog(Component parent, Object message) showMessageDialog(Component parent, Object message, String title, int messageType)
  • 14. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs JOptionPane.showMessageDialog(null, "Hello World"); The first argument can be a reference to a graphical component. The dialog box is displayed inside that component. If null is passed as the first argument, which causes the dialog box to be displayed in the center of the screen. The second argument is the message that is to be displayed.
  • 15. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs By default the dialog box has: the string “Message” displayed in its title bar, and an information icon (showing the letter “i”) is displayed. JOptionPane.showMessageDialog(null, "Invalid Data", "My Message Box", JOptionPane.ERROR_MESSAGE); The third option is the title bar text.
  • 16. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs These constants can be use to control the icon that is displayed. JOptionPane.ERROR_MESSAGE JOptionPane.INFORMATION_MESSAGE JOptionPane.WARNING_MESSAGE JOptionPane.QUESTION_MESSAGE JOptionPane.PLAIN_MESSAGE
  • 17. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs
  • 18. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Message Dialogs The dialog boxes displayed by the JOptionPane class are modal dialog boxes. A modal dialog box suspends execution of any other statements until the dialog box is closed. When the JOptionPane.showMessageDialog method is called, the statements that appear after the method call do not execute until the user closes the message box.
  • 19. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Input Dialogs • An input dialog is a quick and simple way to ask the user to enter data. • The dialog displays a text field, an Ok button and a Cancel button. • If Ok is pressed, the dialog returns the user’s input. • If Cancel is pressed, the dialog returns null.
  • 20. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Input Dialogs The JOptionPane has several overloaded versions of the static showInputDialog method. Here are two of them: showInputDialog(Object message) showInputDialog(Component parent, Object message, String title, int messageType)
  • 21. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Input Dialogs String name; name = JOptionPane.showInputDialog("Enter your name."); The argument passed to the method is the message to display. If the user clicks on the OK button, name references the string entered by the user. If the user clicks on the Cancel button, name references null.
  • 22. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Input Dialogs By default the input dialog box: has the string “Input” in its title bar, and displays a question icon. String value; value = JOptionPane.showInputDialog(null, "Enter the value again.", "Enter Carefully!", JOptionPane.WARNING_MESSAGE);
  • 23. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Confirm Dialog A confirm dialog box typically asks the user a yes or no question. By default Yes, No, and Cancel buttons are displayed. The showConfirmDialog method is used to display a confirm dialog box. There are several overloaded versions of this method. int showConfirmDialog(Component parent, Object message) int showConfirmDialog(Component parent, Object message, String title, int optionType)
  • 24. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Confirm Dialog int value; value = JOptionPane.showConfirmDialog(null, "Are you sure?"); By default the confirm dialog box displays: “Select an Option” in its title bar, Yes, No, and Cancel buttons.
  • 25. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Confirm Dialog The showConfirmDialog method returns an integer that represents the button clicked by the user. The button that was clicked is determined by comparing the method’s return value to one of the following constants: JOptionPane.YES_OPTION JOptionPane.NO_OPTION JOptionPane.CANCEL_OPTION
  • 26. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Confirm Dialog int value; value = JOptionPane.showConfirmDialog(null, "Are you sure?"); if (value == JOptionPane.YES_OPTION){ //If the user clicked Yes, this code is executed. } else if (value == JOptionPane.NO_OPTION){ //If the user clicked no, this code is executed. } else if (value == JOptionPane.CANCEL_OPTION){ //If the user clicked Cancel, this code is executed. }
  • 27. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Confirm Dialog int value; value = JOptionPane.showConfirmDialog(null, "Are you sure?", "Please Confirm", JOptionPane.YES_NO_OPTION); One of the following constants can be used for the fourth parameter: JOptionPane.YES_NO_OPTION JOptionPane.YES_NO_CANCEL_OPTION Example: TestAverageDialog.java
  • 28. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Stopping a GUI Program A GUI program does not automatically stop executing when the end of the main method is reached. Swing generates a thread, which is a task running in the JVM. If the System.exit method is not called, this thread continues to execute.
  • 29. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Stopping a GUI Program The System.exit method requires an integer argument. System.exit(0); This argument is an exit code that is passed back to the operating system. This code is usually ignored, however, it can be used outside the program: to indicate whether the program ended successfully or as the result of a failure. The value 0 traditionally indicates that the program ended successfully.
  • 30. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows Often, applications need one or more windows with various components. A window is a container, which is simply a component that holds other components. A container that can be displayed as a window is a frame. In a Swing application, you create a frame from the JFrame class.
  • 31. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows A frame is a basic window that has: a border around it, a title bar, and a set of buttons for: minimizing, maximizing, and closing the window. These standard features are sometimes referred to as window decorations.
  • 32. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows • See example: SimpleWindow.java
  • 33. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows The following import statement is needed to use the swing components: import javax.swing.*; In the main method, two constants are declared: final int WINDOW_WIDTH = 350, WINDOW_HEIGHT = 250; We use these constants later in the program to set the size of the window. The window’s size is measured in pixels. A pixel (picture element) is one of the small dots that make up a screen display.
  • 34. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows An instance of the JFrame class needs to be created: JFrame window = new JFrame("A Simple Window"); This statement: creates a JFrame object in memory and assigns its address to the window variable. The string that is passed to the constructor will appear in the window’s title bar when it is displayed. A JFrame is initially invisible.
  • 35. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows To set the size of the window: window.setSize(WINDOW_WIDTH, WINDOW_HEIGHT); To specify the action to take place when the user clicks on the close button. window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); The setDefaultCloseOperation method takes an int argument which specifies the action. JFrame.HIDE_ON_CLOSE - causes the window to be hidden from view, but the application does not end. The default action is JFrame.HIDE_ON_CLOSE.
  • 36. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Creating Windows The following code displays the window: window.setVisible(true); The setVisible method takes a boolean argument. true - display the window. false - hide the window.
  • 37. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Extending JFrame We usually use inheritance to create a new class that extends the JFrame class. When a new class extends an existing class, it inherits many of the existing class’s members just as if they were part of the new class. These members act just as if they were written into the new class declaration. New fields and methods can be declared in the new class declaration. This allows specialized methods and fields to be added to your window. Examples: SimpleWindow2.java, SimpleWindow2Demo.java
  • 38. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Adding Components Swing provides numerous components that can be added to a window. Three fundamental components are: JLabel : An area that can display text. JTextField : An area in which the user may type a single line of input from the keyboard. JButton : A button that can cause an action to occur when it is clicked.
  • 39. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Sketch of Kilometer Converter Graphical User Interface Window Title Label Button Text Field
  • 40. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Adding Components private JLabel messageLabel; private JTextField kiloTextField; private JButton calcButton; … messageLabel = new JLabel( "Enter a distance in kilometers"); kiloTextField = new JTextField(10); calcButton = new JButton("Calculate"); This code declares and instantiates three Swing components.
  • 41. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Adding Components A content pane is a container that is part of every JFrame object. Every component added to a JFrame must be added to its content pane. You do this with the JFrame class's add method. The content pane is not visible and it does not have a border. A panel is also a container that can hold GUI components.
  • 42. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Adding Components Panels cannot be displayed by themselves. Panels are commonly used to hold and organize collections of related components. Create panels with the JPanel class. private JPanel panel; … panel = new JPanel(); panel.add(messageLabel); panel.add(kiloTextField); panel.add(calcButton);
  • 43. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Adding Components Components are typically placed on a panel and then the panel is added to the JFrame's content pane. add(panel); Examples: KiloConverterWindow.java, KilometerConverter.java
  • 44. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Handling Action Events An event is an action that takes place within a program, such as the clicking of a button. When an event takes place, the component that is responsible for the event creates an event object in memory. The event object contains information about the event. The component that generated the event object is know as the event source. It is possible that the source component is connected to one or more event listeners.
  • 45. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Handling Action Events An event listener is an object that responds to events. The source component fires an event which is passed to a method in the event listener. Event listener classes are specific to each application. Event listener classes are commonly written as private inner classes in an application.
  • 46. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Writing Event Listener Classes as Private Inner Classes A class that is defined inside of another class is known as an inner class public class Outer { Fields and methods of the Outer class appear here. private class Inner { Fields and methods of the Inner class appear here. } }
  • 47. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Event Listeners Must Implement an Interface All event listener classes must implement an interface. An interface is something like a class containing one or more method headers. When you write a class that implements an interface, you are agreeing that the class will have all of the methods that are specified in the interface.
  • 48. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Handling Action Events JButton components generate action events, which require an action listener class. Action listener classes must meet the following requirements: It must implement the ActionListener interface. It must have a method named actionPerformed. The actionPerformed method takes an argument of the ActionEvent type. public void actionPerformed(ActionEvent e) { Code to be executed when button is pressed goes here. }
  • 49. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Handling Action Events JButton Component Action Listener Object void actionPerformed(ActionEvent e) When the button is pressed … Event Object The JButton component generates an event object and passes it to the action listener object's actionPerformed method. Examples: KiloConverterWindow.java, KilometerConverter.java
  • 50. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Registering A Listener The process of connecting an event listener object to a component is called registering the event listener. JButton components have a method named addActionListener. calcButton.addActionListener(new CalcButtonListener()); When the user clicks on the source button, the action listener object’s actionPerformed method will be executed.
  • 51. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Background and Foreground Colors Many of the Swing component classes have methods named setBackground and setForeground. setBackground is used to change the color of the component itself. setForeground is used to change the color of the text displayed on the component. Each method takes a color constant as an argument.
  • 52. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Color Constants There are predefined constants that you can use for colors. Color.BLACK Color.BLUE Color.CYAN Color.DARK_GRAY Color.GRAY Color.GREEN Color.LIGHT_GRAY Color.MAGENTA Color.ORANGE Color.PINK Color.RED Color.WHITE Color.YELLOW Examples: ColorWindow.java, ColorDemo.java
  • 53. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley The ActionEvent Object Event objects contain certain information about the event. This information can be obtained by calling one of the event object’s methods. Two of these methods are: getSource - returns a reference to the object that generated this event. getActionCommand - returns the action command for this event as a String. Example: EventObjectWindow.java, EventObjectDemo.java
  • 54. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Equipping GUI Classes with a main Method Java applications always starts execution with a method named main. We have seen applications in two separate files, one file for the class that defines the GUI window and one file that contains the main method that creates an object of the GUI window class. Applications can also be written with the main method directly written into the GUI class. See example: EmbeddedMain.java
  • 55. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Layout Managers An important part of designing a GUI application is determining the layout of the components. The term layout refers to the positioning and sizing of components. In Java, you do not normally specify the exact location of a component within a window. A layout manager is an object that: controls the positions and sizes of components, and makes adjustments when necessary.
  • 56. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Layout Managers The layout manager object and the container work together. Java provides several layout managers: FlowLayout - Arranges components in rows. This is the default for panels. BorderLayout - Arranges components in five regions: North, South, East, West, and Center. This is the default layout manager for a JFrame object’s content pane. GridLayout - Arranges components in a grid with rows and columns.
  • 57. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Layout Managers The Container class is one of the base classes that many components are derived from. Any component that is derived from the Container class can have a layout manager added to it. You add a layout manager to a container by calling the setLayout method. JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); In a JFrame constructor you might use: setLayout(new FlowLayout());
  • 58. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley FlowLayout Manager FlowLayout is the default layout manager for JPanel objects. Components appear horizontally, from left to right, in the order that they were added. When there is no more room in a row, the next components “flow” to the next row. See example: FlowWindow.java
  • 59. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley FlowLayout Manager The FlowLayout manager allows you to align components: in the center of each row along the left or right edges of each row. An overloaded constructor allows you to pass: FlowLayout.CENTER, FlowLayout.LEFT, or FlowLayout.RIGHT. Example: setLayout(new FlowLayout(FlowLayout.LEFT));
  • 60. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley FlowLayout Manager FlowLayout inserts a gap of five pixels between components, horizontally and vertically. An overloaded FlowLayout constructor allows these to be adjusted. The constructor has the following format: FlowLayout(int alignment, int horizontalGap, int verticalGap) Example: setLayout(new FlowLayout(FlowLayout.LEFT, 10, 7));
  • 61. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager BorderLayout manages five regions where components can be placed.
  • 62. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager See example: BorderWindow.java A component placed into a container that is managed by a BorderLayout must be placed into one of five regions: – BorderLayout.NORTH – BorderLayout.SOUTH – BorderLayout.EAST – BorderLayout.WEST – BorderLayout.CENTER
  • 63. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager Each region can hold only one component at a time. When a component is added to a region, it is stretched so it fills up the entire region. BorderLayout is the default manager for JFrame objects. add(button, BorderLayout.NORTH); If you do not pass a second argument to the add method, the component will be added to the center region.
  • 64. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager Normally the size of a button is just large enough to accommodate the text that it displays The buttons displayed in BorderLayout region will not retain their normal size. The components are stretched to fill all of the space in their regions.
  • 65. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager If the user resizes the window, the sizes of the components will be changed as well. BorderLayout manager resizes components: placed in the north or south regions may be resized horizontally so it fills up the entire region, placed in the east or west regions may be resized vertically so it fills up the entire region. A component that is placed in the center region may be resized both horizontally and vertically so it fills up the entire region.
  • 66. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley BorderLayout Manager By default there is no gap between the regions. An overloaded BorderLayout constructor allows horizontal and vertical gaps to be specified (in pixels). The constructor has the following format: BorderLayout(int horizontalGap, int verticalGap) Example: setLayout(new BorderLayout(5,10));
  • 67. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Nesting Components in a Layout Adding components to panels and then nesting the panels inside the regions can overcome the single component limitation of layout regions. By adding buttons to a JPanel and then adding the JPanel object to a region, sophisticated layouts can be achieved. See example: BorderPanelWindow.java
  • 68. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley GridLayout Manager GridLayout creates a grid with rows and columns, much like a spreadsheet. A container that is managed by a GridLayout object is divided into equally sized cells. columns rows
  • 69. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley GridLayout Manager GridLayout manager follows some simple rules: Each cell can hold only one component. All of the cells are the size of the largest component placed within the layout. A component that is placed in a cell is automatically resized to fill up any extra space. You pass the number of rows and columns as arguments to the GridLayout constructor.
  • 70. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley GridLayout Manager The general format of the constructor: GridLayout(int rows, int columns) Example setLayout(new GridLayout(2, 3)); A zero (0) can be passed for one of the arguments but not both. passing 0 for both arguments will cause an IllegalArgumentException to be thrown.
  • 71. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley GridLayout Manager 2524232221 2019181716 1514131211 109876 54321 Components are added to a GridLayout in the following order (for a 5×5 grid): Example: GridWindow.java GridLayout also accepts nested components: Example: GridPanelWindow.java
  • 72. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Radio Buttons Radio buttons allow the user to select one choice from several possible options. The JRadioButton class is used to create radio buttons. JRadioButton constructors: JRadioButton(String text) JRadioButton(String text, boolean selected) Example: JRadioButton radio1 = new JRadioButton("Choice 1"); or JRadioButton radio1 = new JRadioButton("Choice 1", true); Button appears already selected when true
  • 73. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Button Groups Radio buttons normally are grouped together. In a radio button group only one of the radio buttons in the group may be selected at any time. Clicking on a radio button selects it and automatically deselects any other radio button in the same group. An instance of the ButtonGroup class is a used to group radio buttons
  • 74. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Button Groups The ButtonGroup object creates the mutually exclusive relationship between the radio buttons that it contains. JRadioButton radio1 = new JRadioButton("Choice 1",true); JRadioButton radio2 = new JRadioButton("Choice 2"); JRadioButton radio3 = new JRadioButton("Choice 3"); ButtonGroup group = new ButtonGroup(); group.add(radio1); group.add(radio2); group.add(radio3);
  • 75. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Button Groups ButtonGroup objects are not containers like JPanel objects, or content frames. If you wish to add the radio buttons to a panel or a content frame, you must add them individually. panel.add(radio1); panel.add(radio2); panel.add(radio3);
  • 76. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Radio Button Events JRadioButton objects generate an action event when they are clicked. To respond to an action event, you must write an action listener class, just like a JButton event handler. See example: MetricConverter.java
  • 77. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Determining Selected Radio Buttons The JRadioButton class’s isSelected method returns a boolean value indicating if the radio button is selected. if (radio.isSelected()) { // Code here executes if the radio // button is selected. }
  • 78. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Selecting a Radio Button in Code It is also possible to select a radio button in code with the JRadioButton class’s doClick method. When the method is called, the radio button is selected just as if the user had clicked on it. As a result, an action event is generated. radio.doClick();
  • 79. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Check Boxes A check box appears as a small box with a label appearing next to it. Like radio buttons, check boxes may be selected or deselected at run time. When a check box is selected, a small check mark appears inside the box. Check boxes are often displayed in groups but they are not usually grouped in a ButtonGroup.
  • 80. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Check Boxes The user is allowed to select any or all of the check boxes that are displayed in a group. The JCheckBox class is used to create check boxes. Two JCheckBox constructors: JCheckBox(String text) JCheckBox(String text, boolean selected) Example: JCheckBox check1 = new JCheckBox("Macaroni"); or JCheckBox check1 = new JCheckBox("Macaroni",true); Check appears in box if true
  • 81. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Check Box Events When a JCheckBox object is selected or deselected, it generates an item event. Handling item events is similar to handling action events. Write an item listener class, which must meet the following requirements: It must implement the ItemListener interface. It must have a method named itemStateChanged. This method must take an argument of the ItemEvent type.
  • 82. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Check Box Events Create an object of the class Register the item listener object with the JCheckBox component. On an event, the itemStateChanged method of the item listener object is automatically run The event object is passed in as an argument.
  • 83. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Determining Selected Check Boxes The isSelected method will determine whether a JCheckBox component is selected. The method returns a boolean value. if (checkBox.isSelected()) { // Code here executes if the check // box is selected. } See example: ColorCheckBoxWindow.java
  • 84. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Selecting Check Boxes in Code It is possible to select check boxes in code with the JCheckBox class’s doClick method. When the method is called, the check box is selected just as if the user had clicked on it. As a result, an item event is generated. checkBox.doClick();
  • 85. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Borders Windows have a more organized look if related components are grouped inside borders. You can add a border to any component that is derived from the JComponent class. Any component derived from JComponent inherits a method named setBorder
  • 86. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Borders The setBorder method is used to add a border to the component. The setBorder method accepts a Border object as its argument. A Border object contains detailed information describing the appearance of a border. The BorderFactory class, which is part of the javax.swing package, has static methods that return various types of borders.
  • 87. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Border BorderFactory Method Description Compound border createCompoundBorder A border that has two parts: an inside edge and an outside edge. The inside and outside edges can be any of the other borders. Empty border createEmptyBorder A border that contains only empty space. Etched border createEtchedBorder A border with a 3D appearance that looks “etched” into the background. Line border createLineBorder A border that appears as a line. Lowered bevel border createLoweredBevelBorder A border that looks like beveled edges. It has a 3D appearance that gives the illusion of being sunken into the surrounding background. Matte border createMatteBorder A line border that can have edges of different thicknesses. Raised bevel border createRaisedBevelBorder A border that looks like beveled edges. It has a 3D appearance that gives the illusion of being raised above the surrounding background. Titled border createTitledBorder An etched border with a title.
  • 88. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley The Brandi’s Bagel House Application A complex application that uses numerous components can be constructed from several specialized panel components, each containing other components and related code such as event listeners. Examples: GreetingPanel.java, BagelPanel.java, ToppingPanel.java, CoffeePanel.java, OrderCalculatorGUI.java, Bagel.java
  • 89. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Splash Screens • A splash screen is a graphic image that is displayed while an application loads into memory and starts up. • A splash screen keeps the user's attention while a large application loads and executes. • Beginning with Java 6, you can display splash screens with your Java applications.
  • 90. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Splash Screens To display the splash screen you use the java command in the following way when you run the application: java -splash:GraphicFileName ClassFileName GraphicFileName is the name of the file that contains the graphic image, and ClassFileName is the name of the .class fi le that you are running. The graphic file can be in the GIF, PNG, or JPEG formats.
  • 91. Copyright © 2015 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Using Console Output to Debug a GUI Display variable values, etc. as your application executes to identify logic errors Use System.out.println() // For debugging, display the text entered, and // its value converted to a double. System.out.println("Reading " + str + " from the text field."); System.out.println("Converted value: " + Double.parseDouble(str)); See example: KiloConverterWindow.java