OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over...

23
OLD BUSINESS: Let’s talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment for next time Class 20 Nov 11

Transcript of OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over...

Page 1: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

OLD BUSINESS:Let’s talk about the next exam

Project proposals – Functional Definitions

Go over homework –

NEW BUSINESS:Chapter 4 today GUIs

Assignment for next time

Class 20Nov 11

Page 2: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

Assignment for next time.

Do #1, and then EITHER #2 or #3.

1) By next Thursday I want a Functional Definition of your project.

2) Do PP 4.8 about a set of buildings. This is VERY similar to the splat program – I would start with splat/splatpanel/circle as an example.

3) STRETCH PROBLEM: Do PP 4.11 – requires a bit more programming, but not that much harder than 4.8.

Functional Definition: Describes what your program look like to someone using it. A picture IS worth a thousand words – look at the programs shown in the rest of this chapter in the book – you will have ability to use these techniques. Some of you can handle the GUI at the end of Chpts. 5 & 6 – look there also.

For Class 21On Monday Nov 15

Page 3: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-3

The Rest of the SemesterMondays Thursdays

Nov 1 Exam 18: Nov 4 Project Initial Proposal

19: Nov 8 I give you feedback on initial proposal

20: Nov 11 Project Final Proposal

21: Nov 15 22: Nov 18 Project Functionality Due

23: Nov 22 Project Design Due Nov 25 - Thanksgiving

Nov 29 - Exam Dec 2 - Project Presentations

Dec 06 Project Presentations Dec 09 Project Presentations

Page 4: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-4

Outline

Anatomy of a Class

Encapsulation

Anatomy of a Method

Graphical Objects

Graphical User Interfaces

Buttons and Text Fields

Page 5: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-5

Graphical ObjectsSome objects contain information that determines how the

object should be represented visually

Most GUI components are graphical objects

We can have some effect on how components get drawn

We did this in Chapter 2 when we defined the paint method of an applet

Let's look at some other examples of graphical objects

Page 6: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-6

Smiling Face ExampleThe SmilingFace program draws a face by defining the paintComponent method of a panel

The main method of the SmilingFace class instantiates a SmilingFacePanel and displays it

The SmilingFacePanel class is derived from the JPanel class using inheritance

Every Swing component has a paintComponent method

The paintComponent method accepts a Graphics object that represents the graphics context for the panel

We define the paintComponent method to draw the face using Graphics methods

See difference between drawing on a panel and adding other GUI components to a panel

Page 7: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-7

import javax.swing.JFrame;

public class SmilingFace { public static void main (String[] args) { JFrame frame = new JFrame ("Smiling Face"); SmilingFacePanel panel = new SmilingFacePanel(); frame.getContentPane().add(panel); }}

public class SmilingFacePanel extends JPanel { private final int BASEX = 120, BASEY = 60; // base point for head

public SmilingFacePanel () CONSTRUCTOR { setBackground (Color.blue); setPreferredSize (new Dimension(320, 200)); setFont (new Font("Arial", Font.BOLD, 16)); } public void paintComponent (Graphics page) DRAW FACE { super.paintComponent (page); page.setColor (Color.yellow); page.fillOval (BASEX, BASEY, 80, 80); // head page.drawString ("Always remember that you are unique!", BASEX-105, BASEY-15); page.drawString ("Just like everyone else.", BASEX-45, BASEY+105); }}

Watch out!For demo purpose I’ve removed code. See book for complete code!

Page 8: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-8

Splat ExampleThe Splat example draws a set of colored circles

on a panel, but each circle is represented as a separate object that maintains its own graphical information – the smarts are in the circles.

The paintComponent method of the panel "asks" each circle to draw itself.

See the code for Splat.java, SplatPanel.java, and Circle.java

Page 9: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-9

import javax.swing.*;

public class Splat { public static void main (String[] args) { JFrame frame = new JFrame ("Splat"); frame.getContentPane().add(new SplatPanel()); }}

Splat Example(Note – code is missing)

public class Circle { private int diameter, x, y; private Color color; // Constructor public Circle (int size, Color shade, int upperX, int upperY) { diameter = size; color = shade; x = upperX; y = upperY; }

public class SplatPanel extends JPanel { private Circle circle1, circle2, circle3, circle4, circle5;

public SplatPanel() { // Constructor circle1 = new Circle (30, Color.red, 70, 35); setPreferredSize (new Dimension(300, 200)); setBackground (Color.black); } public void paintComponent (Graphics page){ super.paintComponent(page); circle1.draw(page); }}

// This is part of Circle.java

public void draw (Graphics page) { page.setColor (color); page.fillOval (x, y, diameter, diameter); }}

Page 10: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-10

Outline

Anatomy of a Class

Encapsulation

Anatomy of a Method

Graphical Objects

Graphical User Interfaces

Buttons and Text Fields

Page 11: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-11

Graphical User InterfacesA Graphical User Interface (GUI) in Java is created with

at least three kinds of objects:

components

events

listeners

We've previously discussed components, which are objects that represent screen elements

labels, buttons, text fields, menus, etc.

Some components are containers that hold and organize other components

frames, panels, applets, dialog boxes

Page 12: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-12

EventsAn event is an object that represents some activity to

which we may want to respond

For example, we may want our program to perform some action when the following occurs:

the mouse is moved

the mouse is dragged

a mouse button is clicked

a graphical button is clicked

a keyboard key is pressed

a timer expires

Events often correspond to user actions, but not always

Page 13: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-13

Events and ListenersThe Java standard class library contains several

classes that represent typical events

Components, such as a graphical button, generate (or fire) an event when it occurs

A listener object "waits" for an event to occur and responds accordingly

We can design listener objects to take whatever actions are appropriate when an event occurs

Page 14: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-14

Events and Listeners

Component

A component objectmay generate an event

Listener

A corresponding listenerobject is designed torespond to the event

Event

When the event occurs, the component callsthe appropriate method of the listener,

passing an object that describes the event

Page 15: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-15

GUI DevelopmentGenerally we use components and events that are predefined

by classes in the Java class library

Therefore, to create a Java program that uses a GUI we must:

instantiate and set up the necessary components

implement listener classes for any events we care about

establish the relationship between listeners and components that generate the corresponding events

Let's now explore some new components and see how this all comes together

Page 16: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-16

Outline

Anatomy of a Class

Encapsulation

Anatomy of a Method

Graphical Objects

Graphical User Interfaces

Buttons and Text Fields

Page 17: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-17

ButtonsA push button is a component that allows the user to initiate

an action by pressing a graphical button using the mouse

A push button is defined by the JButton class

It generates an action event

Look at PushCounter.java example. Displays a push button that increments a counter each time it is pushed

Page 18: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-18

Push Counter ExampleThe components of the GUI are the button, a label

to display the counter, a panel to organize the components, and the main frame

The ButtonListener class is the listener for the action event generated by the button

The ButtonListener class implements the ActionListener interface

The only method in the ActionListener interface is the actionPerformed method

Page 19: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-19

Push Counter ExampleThe PushCounterPanel constructor:

instantiates the ButtonListener object

establishes the relationship between the button and the listener by the call to addActionListener

When the user presses the button, the button component creates an ActionEvent object and calls the actionPerformed method of the listener

The actionPerformed method increments the counter and resets the text of the label

Page 20: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-20

What is Essential?// Fahrenheit.java Author: Lewis/Loftus

import javax.swing.JFrame;

public class Fahrenheit{

public static void main (String[] args) {

JFrame frame = new JFrame ("Fahrenheit");

FahrenheitPanel panel = new FahrenheitPanel();

frame.getContentPane().add(panel);

}

}

Comments

Import of needed definitions

Declaration of a class

A main so java knows where to start

A frame that’s the GUI outline

A panel contains the GUI content. Calls the constructor of Fahrenheit Panel

Glue the panel to the frame

Page 21: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-21

What is Essential?public class FahrenheitPanel extends JPanel{

private JTextField fahrenheit;

public FahrenheitPanel() {

resultLabel = new JLabel (“---");

fahrenheit = new JTextField (5);

fahrenheit.addActionListener (new TempListener());

add (inputLabel);

add (fahrenheit);

}

private class TempListener implements ActionListener {

public void actionPerformed (ActionEvent event) {

resultLabel.setText (Integer.toString (celsiusTemp));

}

}

addActionListener tells what happens When Someone adds text.

A constructor

Declaration of a class

There is NO main here!!

Instantiate components

TempListener starts up when text is typed

Glue the components to the panel

actionPerformed is key word – starts up within the listener

The setText method displays the new temperature.

Page 22: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-22

Text FieldsLet's look at another GUI example that uses

another type of component

A text field allows the user to enter one line of input

If the cursor is in the text field, the text field component generates an action event when the enter key is pressed

Page 23: OLD BUSINESS : Lets talk about the next exam Project proposals – Functional Definitions Go over homework – NEW BUSINESS: Chapter 4 today GUIs Assignment.

4-23

Fahrenheit ExampleLike the PushCounter example, the GUI is set up in a

separate panel class

The TempListener inner class defines the listener for the action event generated by the text field

The FahrenheitPanel constructor instantiates the listener and adds it to the text field

When the user types a temperature and presses enter, the text field generates the action event and calls the actionPerformed method of the listener

The actionPerformed method computes the conversion and updates the result label