JFrame JComponent JFrame JComponent JFrame JComponent.

28
Lecture 19 COP3502: Introduction to CIS I

Transcript of JFrame JComponent JFrame JComponent JFrame JComponent.

Page 1: JFrame JComponent JFrame JComponent JFrame JComponent.

Lecture 19COP3502: Introduction to CIS I

Page 2: JFrame JComponent JFrame JComponent JFrame JComponent.

java swing

Page 3: JFrame JComponent JFrame JComponent JFrame JComponent.

java swingimport javax.swing.*;

Page 4: JFrame JComponent JFrame JComponent JFrame JComponent.

JFrame

Page 5: JFrame JComponent JFrame JComponent JFrame JComponent.

JFrameJComponent

Page 6: JFrame JComponent JFrame JComponent JFrame JComponent.

JFrameJComponent

Page 7: JFrame JComponent JFrame JComponent JFrame JComponent.

JFrameJComponent

Page 8: JFrame JComponent JFrame JComponent JFrame JComponent.

JComponents

JPanelJLabelJSlider

JScrollBarJPopupMenu

JMenuBar…. many more!

Page 9: JFrame JComponent JFrame JComponent JFrame JComponent.
Page 10: JFrame JComponent JFrame JComponent JFrame JComponent.

JComponents are abstract

Add functionality by creating subclass of a JComponent

public class MySuperAwesomePanel extends JPanel {

// Panel functionality}

Page 11: JFrame JComponent JFrame JComponent JFrame JComponent.

nested classes

classes declared within the body of another class

“private static class”

good for managing many small classes that make up a larger class

Page 12: JFrame JComponent JFrame JComponent JFrame JComponent.

window organization

Page 13: JFrame JComponent JFrame JComponent JFrame JComponent.

graphicsimport java.awt.Graphics;

Page 14: JFrame JComponent JFrame JComponent JFrame JComponent.

graphicsimport java.awt.Graphics;

1. contains all the information related to drawing graphics

eg. Background and foreground colors, location, dimensions

Page 15: JFrame JComponent JFrame JComponent JFrame JComponent.

graphicsimport java.awt.Graphics;

1. contains all the information related to drawing graphics

eg. Background and foreground colors, location, dimensions

2. contains methods for actually drawing graphics to screen

eg. Shapes, text, and images

Page 16: JFrame JComponent JFrame JComponent JFrame JComponent.

graphicsimport java.awt.Graphics;

Graphics is an abstract classYou cannot instantiate a Graphics object on your

own

typically created by the JComponent and given to the component’s paint() or paintComponent() method

Page 17: JFrame JComponent JFrame JComponent JFrame JComponent.

paintComponent(Graphics g)

inherited from a JComponent

does nothing on its own

YOU must override and provide implementation

Page 18: JFrame JComponent JFrame JComponent JFrame JComponent.

repaint()

You cannot call paintComponent(Graphics g) on your own

Only the system can!

repaint() is inherited from Jcomponent

calling it creates a Graphics object and calls paintComponent()

Page 19: JFrame JComponent JFrame JComponent JFrame JComponent.

repaint()

Page 20: JFrame JComponent JFrame JComponent JFrame JComponent.

Shape Classimport java.awt.geom.*;

Page 21: JFrame JComponent JFrame JComponent JFrame JComponent.
Page 22: JFrame JComponent JFrame JComponent JFrame JComponent.

eventsimport java.awt.event.*

Page 23: JFrame JComponent JFrame JComponent JFrame JComponent.

stimulus-response model

source listener

responder(s)

event

Page 24: JFrame JComponent JFrame JComponent JFrame JComponent.

four parts of process Java mechanisms

stimulus event (button press, timer tick, etc.)

communication (event record of what happened)

ActionEvent class (contains information about nature of stimulus)

receiving mechanism (how are the stimulus and responding objects connected?)

ActionListener interface (classes implementing can listen for a specific kind of event)

response (listening object’s reaction to stimulus)

actionPerformed (method called in response to stimulus)

Page 25: JFrame JComponent JFrame JComponent JFrame JComponent.

moving our alien

- need a Timer to generate actions

- need a class listening and responding to actions

implement ActionListener by defining actionPerformed()

Page 26: JFrame JComponent JFrame JComponent JFrame JComponent.

Plan:1. Create a Timer() object within our drawing panel

- takes two args: delay time and action2. Create an “inner class” MoveAlien that implements

ActionListener3. Define actionPerformed() to tell our panel what to do4. Our drawing panel decides what should move and

repaints itself

Page 27: JFrame JComponent JFrame JComponent JFrame JComponent.

moving our alien with a mouse

implement MouseListener interface

define mouseClicked() to instead tell our panel what to do

Page 28: JFrame JComponent JFrame JComponent JFrame JComponent.

moving our alien with a keyboard

request focus on component

implement KeyListener interface

define keyPressed() to instead tell our panel what to do