Title: Window Interfaces Using Swing
1Window Interfaces Using Swing
2Outline
- Background
- Basic Swing Details
- Buttons and Action Listeners
- Container Classes
- Text I/O for GUIs
3Introduction
- Modern programs use window interfaces with
buttons and menus, and allow users to make
choices using a mouse. - We will learn how to write simple window
interfaces using the Swing library. - Well also use an older library known as AWT
(Abstract Windows Toolkit) which is a necessary
complement to the Swing library.
4Human Computer Interaction
Transparent Complexity
Domesticated Computer
Pervasive Technology
5Steps of HCI
Goal
Action
Specification
Execution
Intention
Evaluation
Perception
Interpretation
6Human Computer Interaction
HCI
MMI, User Interface, Interface Science, Usability
Engineering ....
7GUIs - Graphical User Interfaces
- Windowing systems that interact with users often
are called GUIs. - A GUI accepts information from a user and makes
it available to the program for processing. - Most of the interaction is graphical in nature.
8Graphical User Interfaces
1/2 1/4 1/8 1/16 1/32 1/64 .... ?
9Icons
10Macintosh
- Introduced HCI into the mass market.
- Uniformity of the user interface
- A de facto interface standard
- Direct manipulation
- on the new technology base
- Multi-windows, menu hierarchy, mouse, icons, ...
11Definitions
- A window is a portion of the users screen - a
screen within a screen. - Typically, it has a border and a title.
- A menu is a list of alternatives available to the
user. - A menu item is selected by using the mouse to
place the cursor over the selected item, and by
clicking the mouse.
12Definitions, cont.
- A button serves much the same purpose as a menu
item. - Typically, a button has a label.
- The button is pushed by using the mouse to
position the cursor over the button, and by
clicking the mouse.
13Event-Driven Programming,I
- Most GUI program use events and event handlers.
- A GUI event is an object that represents some
action such as clicking a mouse, dragging a
mouse, pressing a keyboard key, clicking the
close-window button on a window, etc. - When an object generates an event, it is said to
fire the event.
14Event-Driven Programming, II
- Objects that can fire events have one or more
listener objects. - The programmer chooses which event-firing objects
have listeners. - Event handlers are programmer-defined methods
associated with the listener objects that
determine what happens when events are detected
by their associated listener(s).
15Event-Driven Programming, III
16Characteristics of Event-Driven Programming
- In general, its impossible to predict the
sequence of events in advance. - When we write a GUI, there may be several methods
that we never call directly. - Instead, Swing calls these methods for us in
response to events which have listeners. - The classes that we define will be derived from
classes in the Swing library. - Sometimes well use inherited methods, and
sometimes well override them.
17Basic Swing Details Outline
- A Simple Window
- Window Listeners
- Size Units for Screen Objects
- setVisible
- Color
- Anonymous Objects
- JFrame Methods
- Layout Managers
18Basic Swing Details
- Well start with window elements to
- close the window
- put text in the window
- color the window
- put a title on the window.
19Programming Example A Simple Window
20Programming Example A Simple Window, cont.
21Window Listeners
- A window listener listens to events from a
window, such as a click on the close-window
button. - A window listener is registered when it becomes
associated with the object(s) to which it listens.
22Clicking the Close-Window Button
23Class WindowDestroyer
- A listener class often is derived from class
WindowAdapter. - The inherited methods respond automatically to
different kinds of events. - The way an event is handled depends on the
programmer. - Typically, an inherited method definition is
overridden.
24Class WindowDestroyer, cont.
25Ending a Swing Program
- A GUI program is based on a kind of infinite
loop. - The windowing system normally stays on the screen
until the user indicates that it should go away. - The exit method ends a Java program as soon as
the exit method is executed. - System.exit(0)
26Methods of Class WindowAdapter
27Methods of Class WindowAdapter
28Size Units for Screen Objects
- The size of an object on the screen is measured
in pixels. - A pixel is the smallest unit of screen space onto
which you can write. - Pixels do not represent fixed lengths, but depend
instead on the size and resolution of the screen. - The exact size of what is produced varies from
screen to screen.
29More on setVisible
- Method setVisible takes one argument of type
boolean. - example
- w.setVisible(true)
- Method setVisible permits the programmer to
specify when GUI objects should be displayed and
when they should not.
30Example Improved Swing Program
31Programming Example
32 33Programming Example A Window with Color
- We add four new features
- a title
- a local variable named contentPane
- a background color
- a new way to add the window listener
34A Window with Color
35 36 37The Color Constants
Black Yellow Cyan Magenta
Red Green Blue
38Methods of Class JFrame
39Layout Managers
- The objects that you add to a container class are
arranged by an object known as a layout manager. - A layout manager is added using method setLayout,
which is a method of every container class. - syntax
- Container_Object.setLayout(new Layout_Manager_Clas
s(Any_Parameters))
40Border Layout
41Border Layout, cont.
42Border Layout, cont.
- A BorderLayout manager can place a component into
any of five regions. - Regions which are unused give up their space to
BorderLayout.CENTER.
43Flow Layout
- The simplest layout manager is the FlowLayout
manager. - Components are added and arranged one after
another, left to right, until a row is filled.
Then components are added to the next row in the
same manner. - Each row is centered in its container.
44Grid Layout
- A GridLayout manager arranges components in a
grid of rows and columns. - example
- aContainer.setLayout(new
- GridLayout(2,3))
45Grid Layout, cont.
- Each entry has the same size.
- Rows are filled one at a time, top to bottom, and
from left to right within each row. - Even though the number of columns is specified,
the actual number of columns is determined by the
number of items added to the container.
46Default Layout Managers
- When a default manager is not added explicitly, a
default layout manager is provided. - The default manager for the content pane of a
JFrame is BorderLayout. - The default manager for a JPanel is FlowLayout.
47Layout Managers
- Border Layout
- Flow Layout
- Grid Layout
arranged one after another, left to right
48Buttons and Action Listeners Outline
- Buttons
- Action Listeners and Action Events
- Interfaces
- The Model-View-Controller Pattern
49Buttons
- A button is a GUI component that looks like a
button and does something when it is clicked
using a mouse. - Like a label, a button is created and added to a
container. - Unlike a label, a button can fire an event and
the event can cause a GUI to perform some action.
50Adding Buttons
51 52Action Listeners and Action Events
- For each button, the GUI needs to
- register (specify) the listener object(s).
- define the methods to be invoked when an event is
fired. - For a statement such as
- stopButton.addActionListener(this)
- the class ButtonDemo is itself the listener
class.
53Action Listeners and Action Events, cont.
- To make a class into an ActionListener
- add implements ActionListener to the heading of
the class definition - define a method named ActionPerformed.
- register the ActionListener object with the
component that will fire the event using the
method addActionListener - (A component may register with more than one
listener.)
54Buttons and an Action Listener
55The actionPerformed Method
- An actionListener class must have a method named
actionPerformed that has one parameter of type
ActionEvent. - syntax
- public void actionPerformed(ActionEvent e)
-
- Code_for_Actions_Performed
56Interfaces
- An interface is a property of a class that states
what methods the class must define. - ActionListener is an interface.
- A class which satisfies the requirements of an
interface implements the interface. - A class can define methods in addition to the
methods required by the interface. - An interface is not a class, but it is a type.
57Container Classes Outline
- The JPanel Class
- The Container Class
58The JPanel Class
- A GUI can be organized hierarchically, with
window-like containers inside other window-like
containers. - Class JPanel is a simple container that does
little more than hold components. - Components can be placed in a JPanel which can be
placed in another JPanel, which can be placed
in a JFrame.
59The JPanel Class
60 61The Container Class
- Class Container is a predefined class.
- An object of a class which descends from class
Container is called a container class and can
have components added to it. - Class Jframe (Jpanel) is a descendent of class
Container, permitting any Jframe(Jpanel) object
to hold labels, buttons, panels, and other
components.
62The Container Class, cont.
- (See Display 12.18 from page 879)
63The JComponent Class
- Class JComponent is similar to class Container,
and plays a similar role for components. - Any class that descends from JComponent is called
a JComponent class. - Any JComponent object can be added to any
Container object. - Since class JComponent descends from class
Container, a JComponent object can be added to
another JComponent object.
64Adding Components
- To add a component to a JFrame, use method
getContentPane to obtain the content pane, and
the use method add with the content pane as the
calling object. - example
- Container contentPane getContentPane()
- Jlabel label new Jlabel(Click Here)
- contentPane.add(label)
65Adding Components, cont.
- For other container classes, add components by
using method add directly with an object of the
container class. - example
- JPanel buttonPanel new JPanel()
- JButton stopButton
- new JButton(Stop)
- buttonPanel.add(stopButton)
66Objects in Swing Containers
- Swing containers use three kinds of objects
- the container class itself (such as a panel)
- the components (labels, buttons, panels, etc.)
- the layout manager.
- Typically, a GUI interface, and many subparts of
the GUI, will consist of these three kinds of
objects.
67Creating Simple Window Interfaces Guidelines
- A typical GUI consists of a windowing object
derived from class JFrame, together with
components such as labels and buttons. - The programmer must register a window listener to
close the window. - Components are grouped by placing them in a
JPanel and by adding the JPanel to the GUI.
68Creating Simple Window Interfaces Guidelines,
cont.
- The GUI (i.e. the JFrame) and each JPanel should
be given a layout manager. - The GUI (or some other class) needs to be made an
action listener for components which generate
events of interest. - Each such component should have an action
listener registered with it, and an appropriate
actionPerformed method defined.
69Text I/O for GUIs Outline
- Text Areas and Text Fields
- Inputting and Outputting Numbers
70Text Areas and Text Fields,
71 72 73Text Areas and Text Fields,
- Method getText returns the text written in an
object of class JTextArea. - Method setText of class JTextArea changes the
text in the text area into whatever is provided
as the argument to method setText. - Class JTextField is similar to class JTextArea,
but displays only one line of text.
74Labeling a Text Field
75 76Inputting and Outputting Numbers
- Input provided using a JTextArea object or
JTextField object is received as a string. - When numeric input is needed, the string must be
converted to a number. - To output a number using a GUI constructed with
Swing, the number must be converted to a string. - All input typed by the user is string output, and
all displayed output is string output.
77Inputting and Outputting Numbers, cont.
- To convert a string to an integer, use, for
example - Integer.parseInt(42)
- or
- Integer.parseInt(ioField.getText())
- or, to eliminate whitespace before or
- after the input, use
- Integer.parseInt
- (ioField.getText().trim())
78Summary
- You have learned the basics of event-driven
programming. - You have designed and coded a simple GUI with
buttons and text. - You have learned about several Swing-related
classes.