0% found this document useful (0 votes)
37 views

CIS016-1 - Principles of Programming: Week 6

Uploaded by

Dozie Anyanwu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
37 views

CIS016-1 - Principles of Programming: Week 6

Uploaded by

Dozie Anyanwu
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 39

CIS016-1 – Principles of

Programming

Week 6

15/05/21
1
Agenda

Graphical User Interfaces I


 Swing and AWT
 Event-driven Programming

 Listeners and Events

 GUI Examples

2 15/05/21
Swing and AWT, Simple Input

GUI INPUT WITH


JOPTIONPANE
3 15/05/21
Keyboard Input Classes

 There mainly two ways to develop interactive programs in


Java:
 GUI classes (JOptionPane, JFrame)
 Console Classes (Scanner)

 Since any of these classes are not included in java.lang


package, we need to have an import statement at the
beginning.

 Depending on which method to use, we need to start with


either of the following import statements.
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.util.Scanner;

4 15/05/21
Warming up: A Simple Input Dialog

 Keyboard input in Java can be achieved with a GUI


component, a dialog box (JOptionPane)

String aString =
JOptionPane.showInputDialog(“Please enter
something”);

 See Person package and PersonDemo.java

5 15/05/21
GUI Introduction

 A GUI (Graphical User Interface) is a windowing system that


interacts with the user

 The Java AWT (Abstract Window Toolkit) package is the


original Java package for GUIs
 The Swing package is an improved version of the AWT.
 However, it does not completely replace the AWT. Some AWT
classes are replaced by Swing classes, but other AWT classes are
needed when using Swing
 Swing is now part of the Java Foundation Classes (JFC)

 Swing GUIs are designed using a form of object-oriented


programming known as event-driven programming
6 15/05/21
Hierarchy of

Taken from Savitch, “Absolute Java”


Swing and
AWT Classes

7 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
EVENT-DRIVEN
PROGRAMMING AND GUIS
8 15/05/21
Events and Event-driven Programming

 Event-driven programming is a programming style


that uses a signal-and-response approach to
programming

 An event is an object that acts as a signal to another


object known as a listener

 The sending of an event is called firing the event

 The object that fires the event is often a GUI


component, such as a button that has been clicked
9 15/05/21
Listeners

 A listener object performs some action in response


to the event
 A given component (ie. a button) may have any
number of listeners

 Each listener may respond to a different kind of


event

 Or multiple listeners might may respond to the


same events
10 15/05/21
Exception Objects

 Handling exceptions (discussed later) is a further


example of event-driven programming

 An exception object is an event


 The throwing of an exception is an example of firing an
event

 The listener for an exception object is the catch


block that catches the event

11 15/05/21
Event Handlers

 A listener object has methods that specify what will


happen when events of various kinds are received
by it
 These methods are called event handlers

 The programmer using the listener object will


define or redefine these event-handler methods

12 15/05/21
Event Firing and Event Listening

Taken from Savitch, “Absolute Java”


13 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
Event-driven Programming vs
Sequential Execution

 Event-driven programming is very different from


most programming seen up until now
 So far programs have consisted of a list of statements
executed sequentially
 Changes in the sequence were controlled by the logic
of the program
 Loops (for, while, do-while)
 Conditions (if-else, switch)
 Method invocation

14 15/05/21
Event-driven Programming vs
Sequential Execution

 In event-driven programming, objects are created that


can fire events, and listener objects are created that
can react to the events

 The program itself no longer determines the order in


which things can happen

 Instead, the events (ie. triggered by the user


interacting with the system through the GUI)
determine the order

15 15/05/21
Event-driven Programming

 In an event-driven program, the next thing that


happens depends on the next event
 In particular, methods are defined that will never be
explicitly invoked in any program. Instead, methods
are invoked automatically when an event signals that the
method needs to be called

16 15/05/21
GUIS WITH JAVA SWING AND
JFRAME
17 15/05/21
A Simple Window

 A simple window can consist of an object of the


JFrame class
 A JFrame object includes a border and the usual
three buttons for minimizing, changing the size of,
and closing the window
 The JFrame class is found in the javax.swing
package
 JFrame objects instantiate as:
JFrame firstWindow = new JFrame();

18 15/05/21
A Simple Window

 A JFrame can have components added to it, such as


buttons, menus, and text labels

 These components can be programmed for action


firstWindow.add(endButton);

 It can be made visible using the setVisible method


firstWindow.setVisible(true);

19 15/05/21
A First Swing Demonstration

Taken from Savitch, “Absolute Java”


20 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
A First Swing Demonstration

Taken from Savitch, “Absolute Java”


21 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
A First Swing Demonstration

Taken from Savitch, “Absolute Java”


22 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
A First Swing Demonstration

Taken from Savitch, “Absolute Java”


23 15/05/21
Copyright © 2008 Pearson Addison-Wesley. All rights reserved
Pixels, Resolution and Size

 A pixel is the smallest unit of space on a screen


 Both the size and position of Swing objects are measured in
pixels
 The more pixels on a screen, the greater the screen resolution
 A high-resolution screen of fixed size has many pixels
 Therefore, each one is very small
 A low-resolution screen of fixed size has fewer pixels
 Therefore, each one is much larger
 A two-pixel figure on a low-resolution screen will look larger than
a two-pixel figure on a high-resolution screen

 Our example program used 200x300 pixels

24 15/05/21
Close-Window Button
 The following line from the FirstSwingDemo program ensures that
when the user clicks the close-window button, nothing happens
firstWindow.setDefaultCloseOperation( J
Frame.DO_NOTHING_ON_CLOSE);

 If this was not set, the default action would be


JFrame.HIDE_ON_CLOSE
 This would make the window invisible and inaccessible, but would not
end the program
 Therefore, given this scenario, there would be no way to click the
"Click to end program" button

 Note that the close-window and the other two accompanying buttons
are part of the JFrame object, and not separate buttons
25 15/05/21
GUI Components - JFrame

 The JFrame class is the fundamental GUI


component that can be used as the GUI frame, or
window.
 It needs to be imported from javax.swing.*;
 It contains every GUI component

26 15/05/21
GUI Components – JButton,
Container
 The Jbutton class is a GUI component that can be
placed directly in a Jframe or in a Container
(ContentPane).
 A Container or ContentPane holds components of a
JFrame object
 It can contain different layouts
 It also needs to be imported from javax.swing.*;

27 15/05/21
JButton and Events

 Pressing the button can cause an action to take place.


The action is described in a Listener that is listening for
an Event.

 The sequence is:


 User interaction with a GUI object – the operating system
detects the hardware action and passes the information to
the JVM (the Java virtual machine) and hence to the
program
 The GUI object then produces an event object that is
captured by the ActionListener object in the program which
then executes the programmed action

28 15/05/21
GUI Example – Simple GUI

 FirstSwingDemo is a very simple GUI example in


which a frame contains a single JButton to close
the window.

 See FirstSwingDemo

29 15/05/21
GUI Components -
JTextArea

 One of the actions we could decide to do would be


to capture user input from a JTextArea and
change it or store it or perhaps just to change the
background colour of the JFrame.
 The following example shows how to change the
background JFrame colour.
 See FirstGUI

30 15/05/21
GUI Components – Event Handling

 The event caused by clicking on JButton is handled


by registering a Listener with the JButton object.

 The ActionListener is programmed with the action to


take place when the user click event is detected.

31 15/05/21
GUI Components – Event Handling

 The code that does this is:


myButton.addActionListener(new ActionListener()
{
public void actionPerformed( ActionEvent e)
{
con.setBackground(Color.red);
}
});

 Here we implement the action listener as an anonymous inner


class
 Anonymous – no explicit class name
 Inner – a class defined within a class

 Different GUI object have different Listeners and action


methods.
32 15/05/21
GUI Components -
JTextArea

 We would like to capture textual user input

 We can do this using a JTextField

 We can change the text in a field or store it or


perhaps just perform some other operation, ie. to
change the background colour of the JFrame.

33 15/05/21
GUI Components – Event Handling

 We can use the actionPerformed method to


process the contents of a JTextField and display
the contents in another JTextField.
 We can also introduce another JButton to do this
showing how different objects are addressed

 See NextGUI

34 15/05/21
GUI Components – JLabel
 If we want to just display some text (similar
to System.out.print), we can use
JLabel

35 15/05/21
GUI Components – Layout Manager

 This works in terms of the functionality we


specified but it doesnt look good because the
layout is unsophisticated.
 Layout managers control the GUI appearance
as the next example shows.
 This example also looks at setting Label borders
and how to test equality in Strings.
 See LastGUI

36 15/05/21
Grid Layout and Container
Example

con
GridLayout(2,1) colourPanel
GridLayout(1,2)

textPanel
GridLayout(2,3)

37 15/05/21
To Take Home

 Event-based Programming

 Swing GUI demos (frames, buttons, text


input)

 Event-based programming with listeners and


action events

38 15/05/21
Further Reading

 A useful source is the Java Swing tutorial at


http://docs.oracle.com/javase/tutorial/uiswing/inde
x.html

 Chapter 17 and 18 of Savitch’s “Absolute Java”


(5th edition) cover Swing GUIs

39 15/05/21

You might also like