44
Chapter 8 Getting Started with Graphics Programming Graphics Class Hierarchy Graphics Class Hierarchy Frames Frames Creating & centering frames, adding components Creating & centering frames, adding components to frames to frames Layout Managers Layout Managers FlowLayout, GridLayout, BorderLayout FlowLayout, GridLayout, BorderLayout Drawing on Panels Drawing on Panels The paintComponent method The paintComponent method Using Colors, Fonts, and Font Metrics Using Colors, Fonts, and Font Metrics Drawing Geometric Figures Drawing Geometric Figures Lines, Rectangles, Ovals, Arcs, and Polygons Lines, Rectangles, Ovals, Arcs, and Polygons Event-Driven Programming Event-Driven Programming Event Source, Listener, Listener Interface Event Source, Listener, Listener Interface

Chapter 8 Getting Started with Graphics Programming

  • Upload
    lloyd

  • View
    67

  • Download
    0

Embed Size (px)

DESCRIPTION

Chapter 8 Getting Started with Graphics Programming. Graphics Class Hierarchy Frames Creating & centering frames, adding components to frames Layout Managers FlowLayout, GridLayout, BorderLayout Drawing on Panels The paintComponent method Using Colors, Fonts, and Font Metrics - PowerPoint PPT Presentation

Citation preview

Page 1: Chapter 8 Getting Started with Graphics Programming

Chapter 8 Getting Started with Graphics Programming

Graphics Class HierarchyGraphics Class Hierarchy FramesFrames

Creating & centering frames, adding components to framesCreating & centering frames, adding components to frames Layout Managers Layout Managers

FlowLayout, GridLayout, BorderLayoutFlowLayout, GridLayout, BorderLayout Drawing on PanelsDrawing on Panels

The paintComponent methodThe paintComponent method Using Colors, Fonts, and Font MetricsUsing Colors, Fonts, and Font Metrics Drawing Geometric FiguresDrawing Geometric Figures

Lines, Rectangles, Ovals, Arcs, and PolygonsLines, Rectangles, Ovals, Arcs, and Polygons Event-Driven ProgrammingEvent-Driven Programming

Event Source, Listener, Listener InterfaceEvent Source, Listener, Listener Interface

Page 2: Chapter 8 Getting Started with Graphics Programming

Graphics Class Hierarchy (Swing)

AWTEvent

Font

FontMetrics

Component

Graphics

Object Color

Container

Panel Applet

Frame

Dialog

Window

JComponent

JApplet

JFrame

JDialog

Swing Componentsin the javax.swing package

Lightweight

Heavyweight

Classes in the javax.swingpackage

1

LayoutManager

*

Page 3: Chapter 8 Getting Started with Graphics Programming

JComponent .

JButton

JMenuItem

JCheckBoxMenuItem

AbstractButton

JComponent

JMenu

.JRadioButtonMenuItem

.JToggleButton JCheckBox

JRadioButton

.JComboBox

.JInternalFrame .JLayeredPane

.JList .JMenuBar .JOptionPane

.JPopupMenu

.JProgressBar

.JPane

.JFileChooser .JScrollBar .JScrollPane

.JSeparator

.JSplitPane

.JSlider .JTabbedPane

.JTable

.JTableHeader

.JTextField .JTextComponent

.JEditorPane

.JTextArea

.JToolBar

.JToolTip

.JTree

.JRootPane

.JPanel

.JPasswordField

.JColorChooser

.JLabel

Page 4: Chapter 8 Getting Started with Graphics Programming

AWT (Optional)AWTEvent

Font

FontMetrics

Component

Graphics

Object Color

Canvas

Button

TextComponent

Label

List

CheckBoxGroup

CheckBox

Choice

Container Panel Applet

Frame

Dialog FileDialog

Window

TextField

TextArea

MenuComponent MenuItem

MenuBar

Menu

Scrollbar

LayoutManager

Page 5: Chapter 8 Getting Started with Graphics Programming

Frames

Frame is a window that is not Frame is a window that is not contained inside another window. contained inside another window. Frame is the basis to contain other Frame is the basis to contain other user interface components in Java user interface components in Java graphical applications.graphical applications.

The Frame class can be used to create The Frame class can be used to create windows. windows.

Page 6: Chapter 8 Getting Started with Graphics Programming

UI Components

Frame Pull-down Menus

User InterfaceComponents (UI)

Panel

Panel

Panel

UI

Panel

UI

Panel

UI

Applet

Panel

User InterfaceComponents

Panel

User InterfaceComponents

Panel

User InterfaceComponents

Panel

User InterfaceComponents

panel

Pull-down Menus

Page 7: Chapter 8 Getting Started with Graphics Programming

Creating Frames

RunRun

import javax.swing.*;public class MyFrame{ public static void main(String[] args) { JFrame frame = new JFrame("Test Frame"); frame.setSize(400, 300); frame.setVisible(true); // frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); }

}

NOTE: To enable it to run in JDK 1.2, the EXIT_ON_CLOSE option is commented.

Page 8: Chapter 8 Getting Started with Graphics Programming

Centering Frames

• By default, a frame is displayed in the upper-left corner of the screen. • To display a frame at a specified location, you can use the setLocation(x, y) method in the JFrame class. This method places the upper-left corner of a frame at location (x, y).

Page 9: Chapter 8 Getting Started with Graphics Programming

Centering Frames, cont.

RunRunCenterFrameCenterFrame

screenHeight

screenWidth

frameHeight

screenWidth

(x, y)

Frame

Screen

Page 10: Chapter 8 Getting Started with Graphics Programming

Adding Components into a Frame

// Add a button into the frame frame.getContentPane().add( new JButton("OK"));

RunRunMyFrameWithComponentsMyFrameWithComponents

Page 11: Chapter 8 Getting Started with Graphics Programming

Layout Managers

Java’s layout managers provide a level of Java’s layout managers provide a level of

abstraction to automatically map your user abstraction to automatically map your user

interface on all windowing systems. interface on all windowing systems.

The UI components are placed in containers. The UI components are placed in containers.

Each container has a layout manager to Each container has a layout manager to

arrange the UI components within the arrange the UI components within the

container.container.

Page 12: Chapter 8 Getting Started with Graphics Programming

Kinds of Layout Managers FlowLayoutFlowLayout

GridLayoutGridLayout

BorderLayoutBorderLayout

CardLayout CardLayout

GridBagLayoutGridBagLayout

Page 13: Chapter 8 Getting Started with Graphics Programming

Example 8.1Testing the FlowLayout Manager

The components are arranged in the The components are arranged in the container from left to right in the order in container from left to right in the order in which they were added. When one row which they were added. When one row becomes filled, a new row is started.becomes filled, a new row is started.

ShowFlowLayoutShowFlowLayout RunRun

Page 14: Chapter 8 Getting Started with Graphics Programming

FlowLayout Constructors public FlowLayout(int align, int hGap, int vGap)public FlowLayout(int align, int hGap, int vGap)

Constructs a new Constructs a new FlowLayoutFlowLayout with a specified alignment, with a specified alignment, horizontal gap, and vertical gap. The horizontal gap, and vertical gap. The gapsgaps are the distances are the distances in pixel between components.in pixel between components.

public FlowLayout(int alignment)public FlowLayout(int alignment)

Constructs a new Constructs a new FlowLayoutFlowLayout with a specified alignment and a with a specified alignment and a default gap of five pixels for both horizontal and vertical.default gap of five pixels for both horizontal and vertical.

public FlowLayout()public FlowLayout()

Constructs a new Constructs a new FlowLayoutFlowLayout with a default with a defaultcenter alignment and a default gap of five pixelscenter alignment and a default gap of five pixelsfor both horizontal and vertical.for both horizontal and vertical.

Page 15: Chapter 8 Getting Started with Graphics Programming

Example 8.2Testing the GridLayout Manager

The The GridLayoutGridLayout manager arranges components manager arranges componentsin a grid (matrix) formation with the number ofin a grid (matrix) formation with the number ofrows and columns defined by the constructor. rows and columns defined by the constructor. The components are placed in the grid from left The components are placed in the grid from left to right starting with the first row, then the to right starting with the first row, then the second, and so on. second, and so on.

ShowGridLayoutShowGridLayout RunRun

Page 16: Chapter 8 Getting Started with Graphics Programming

GridLayout Constructors public GridLayout(int rows, int columns)public GridLayout(int rows, int columns)

Constructs a new Constructs a new GridLayoutGridLayout with the with the specified number of rows and columns.specified number of rows and columns.

public GridLayout(int rows, int columns, int public GridLayout(int rows, int columns, int hGap, int vGap)hGap, int vGap)

Constructs a new Constructs a new GridLayoutGridLayout with the with thespecified number of rows and columns,specified number of rows and columns,along with specified horizontal andalong with specified horizontal andvertical gaps between components.vertical gaps between components.

Page 17: Chapter 8 Getting Started with Graphics Programming

Example 8.3Testing the BorderLayout Manager

The The BorderLayoutBorderLayout manager divides the manager divides the window into five areas: window into five areas: East, South, West, North, East, South, West, North, and Center. Components and Center. Components are added to a are added to a BorderLayoutBorderLayout by byusingusing

ShowBorderLayoutShowBorderLayout RunRun

add(Component, constraint), where constraint is BorderLayout.EAST, BorderLayout.SOUTH, BorderLayout.WEST, BorderLayout.NORTH, or BorderLayout.CENTER.

Page 18: Chapter 8 Getting Started with Graphics Programming

Using Panels as Containers

Panels act as smaller containers for Panels act as smaller containers for grouping user interface components. grouping user interface components.

It is recommended that you place the It is recommended that you place the user interface components in panels and user interface components in panels and place the panels in a frame. You can also place the panels in a frame. You can also place panels in a panel. place panels in a panel.

Page 19: Chapter 8 Getting Started with Graphics Programming

Example 8.4 Testing Panel

This example uses panels to organize This example uses panels to organize components. The program creates a user components. The program creates a user interface for a Microwave oven. interface for a Microwave oven.

TestPanelsTestPanels RunRun

Page 20: Chapter 8 Getting Started with Graphics Programming

Drawing on Panels

JPanel can be used to draw graphics (including JPanel can be used to draw graphics (including text) and enable user interaction. text) and enable user interaction.

To draw in a panel, you create a new class To draw in a panel, you create a new class that extends JPanel and override the that extends JPanel and override the paintComponent method to tell the panel how paintComponent method to tell the panel how to draw things. to draw things. You can then display strings, draw geometric You can then display strings, draw geometric shapes, and view images on the panel. shapes, and view images on the panel.

Page 21: Chapter 8 Getting Started with Graphics Programming

The Color Class

Color c = new Color(r, g, b);Color c = new Color(r, g, b);rr, , gg, and , and bb specify a color by its red, specify a color by its red, green, and blue components.green, and blue components.

Example:Example:Color c = new Color(128, 100, 100);Color c = new Color(128, 100, 100);

Page 22: Chapter 8 Getting Started with Graphics Programming

Setting ColorsYou can use the following methods to set the component’s You can use the following methods to set the component’s background and foreground colors:background and foreground colors:

setBackground(Color c) setBackground(Color c)

setForeground(Color c)setForeground(Color c)

Example:Example:

setBackground(Color.yellow); setForeground(Color.red);setBackground(Color.yellow); setForeground(Color.red);

Page 23: Chapter 8 Getting Started with Graphics Programming

The Font Class

Font myFont = Font(name, style, size);Font myFont = Font(name, style, size);

Example:Example:Font myFont = new Font("SansSerif ", Font.BOLD, 16);Font myFont = new Font("SansSerif ", Font.BOLD, 16);Font myFont = new Font("Serif", Font.BOLD+Font.ITALIC, 12)Font myFont = new Font("Serif", Font.BOLD+Font.ITALIC, 12) ;;

Page 24: Chapter 8 Getting Started with Graphics Programming

Setting Fonts

public void paint(Graphics g)public void paint(Graphics g)

{{

Font myFont = new Font("Times", Font.BOLD, 16);Font myFont = new Font("Times", Font.BOLD, 16);

g.setFont(myFont);g.setFont(myFont);

g.drawString("Welcome to Java", 20, 40);g.drawString("Welcome to Java", 20, 40);

//set a new font//set a new font

g.setFont(new Font("Courier", Font.BOLD+Font.ITALIC, 12));g.setFont(new Font("Courier", Font.BOLD+Font.ITALIC, 12));

g.drawString("Welcome to Java", 20, 70);g.drawString("Welcome to Java", 20, 70);

}}

Page 25: Chapter 8 Getting Started with Graphics Programming

The FontMetrics Class

Page 26: Chapter 8 Getting Started with Graphics Programming

Get FontMetrics g.getFontMetrics(Font f);g.getFontMetrics(Font f);

oror g.getFontMetrics();g.getFontMetrics();

public int getAscent()public int getAscent()

public int getDescent()public int getDescent()

public int getLeading()public int getLeading()

public int getHeight()public int getHeight()

public int stringWidth(String str)public int stringWidth(String str)

Page 27: Chapter 8 Getting Started with Graphics Programming

Example 8.5Using FontMetrics

Objective: Display “Welcome to Java” in SansSerif Objective: Display “Welcome to Java” in SansSerif 20-point bold, centered in the frame.20-point bold, centered in the frame.

TestFontMetricsTestFontMetrics

RunRun

Page 28: Chapter 8 Getting Started with Graphics Programming

Drawing Geometric Figures

Drawing LinesDrawing Lines Drawing RectanglesDrawing Rectangles Drawing OvalsDrawing Ovals Drawing ArcsDrawing Arcs Drawing PolygonsDrawing Polygons

Page 29: Chapter 8 Getting Started with Graphics Programming

Drawing Lines

drawLine(x1, y1, x2, y2);drawLine(x1, y1, x2, y2);

Page 30: Chapter 8 Getting Started with Graphics Programming

Drawing Rectangles drawRect(x, y, w, h);drawRect(x, y, w, h);

fillRect(x, y, w, h);fillRect(x, y, w, h);

Page 31: Chapter 8 Getting Started with Graphics Programming

Drawing Rounded Rectangles drawRoundRect(x, y, w, h, aw, ah);drawRoundRect(x, y, w, h, aw, ah);

fillRoundRect(x, y, w, h, aw, ah);fillRoundRect(x, y, w, h, aw, ah);

Page 32: Chapter 8 Getting Started with Graphics Programming

Drawing Ovals drawOval(x, y, w, h);drawOval(x, y, w, h);

fillOval(x, y, w, h);fillOval(x, y, w, h);

Page 33: Chapter 8 Getting Started with Graphics Programming

Drawing Arcs drawArc(x, y, w, h, angle1, angle2);drawArc(x, y, w, h, angle1, angle2); fillArc(x, y, w, h, angle1, angle2);fillArc(x, y, w, h, angle1, angle2);

Page 34: Chapter 8 Getting Started with Graphics Programming

Drawing Polygonsint x[] = {40, 70, 60, 45, 20};int x[] = {40, 70, 60, 45, 20};int y[] = {20, 40, 80, 45, 60};int y[] = {20, 40, 80, 45, 60};g.drawPolygon(x, y, x.length);g.drawPolygon(x, y, x.length);g.fillPolygon(x, y, x.length);g.fillPolygon(x, y, x.length);

Page 35: Chapter 8 Getting Started with Graphics Programming

Example 8.6Drawing a Clock

Objective: Use drawing and trigonometric Objective: Use drawing and trigonometric methods to draw a clock showing the specified methods to draw a clock showing the specified hour, minute, and second in a frame.hour, minute, and second in a frame.

DisplayClockDisplayClock

RunRun

DrawClockDrawClock

Page 36: Chapter 8 Getting Started with Graphics Programming

Event-Driven Programming

Procedural programmingProcedural programming is executed in is executed in procedural order.procedural order.

In In event-driven programmingevent-driven programming, code is , code is executed upon activation of events. executed upon activation of events.

Page 37: Chapter 8 Getting Started with Graphics Programming

Events An An eventevent can be defined as a type of signal can be defined as a type of signal

to the program that something has to the program that something has happened. happened.

The event is generated by external user The event is generated by external user actions such as mouse movements, mouse actions such as mouse movements, mouse button clicks, and keystrokes, or by the button clicks, and keystrokes, or by the operating system, such as a timer.operating system, such as a timer.

Page 38: Chapter 8 Getting Started with Graphics Programming

Event Information idid: A number that identifies the event. : A number that identifies the event. targettarget: The AWT component upon which the event : The AWT component upon which the event

occurred. occurred. argarg: Additional information about the AWT components. : Additional information about the AWT components. x, y coordinatesx, y coordinates: The mouse pointer location when a : The mouse pointer location when a

mouse movement event occurred.mouse movement event occurred. clickCountclickCount: The number of consecutive clicks for the: The number of consecutive clicks for the

mouse events. For other events, it is zero.mouse events. For other events, it is zero. whenwhen: The time stamp of the event.: The time stamp of the event. keykey: The key that was pressed or released.: The key that was pressed or released.

Page 39: Chapter 8 Getting Started with Graphics Programming

Event Classes

Page 40: Chapter 8 Getting Started with Graphics Programming

Selected User Actions

Source Event TypeUser Action Object Generated

Clicked on a button JButton ActionEvent

Changed text JTextComponent TextEvent

Double-clicked on a list item JList ActionEvent

Selected or deselected an JList ItemEvent item with a single click

Selected or deselected an item JComaboBoxItemEventa

Page 41: Chapter 8 Getting Started with Graphics Programming

The Delegation Model

Page 42: Chapter 8 Getting Started with Graphics Programming

Selected Event Handlers Event Class Listener Interface Listener Methods (Handlers)ActionEvent ActionListener actionPerformed(ActionEvent)ItemEvent ItemListener itemStateChanged(ItemEvent)WindowEvent WindowListener windowClosing(WindowEvent)

windowOpened(WindowEvent)windowIconified(WindowEvent)

windowDeiconified(WindowEvent)windowClosed(WindowEvent)windowActivated(WindowEvent)

windowDeactivated(WindowEvent)ContainerEvent ContainerListener componentAdded(ContainerEvent)

componentRemoved(ContainerEvent)

Page 43: Chapter 8 Getting Started with Graphics Programming

Example 8.7Handling Simple Action Events Objective: Display Objective: Display two buttons OK and two buttons OK and

Cancel in the window. A message is Cancel in the window. A message is displayed on the console to indicate which displayed on the console to indicate which button is clicked, when a button is clicked. button is clicked, when a button is clicked.

TestActionEventTestActionEvent

RunRun

Page 44: Chapter 8 Getting Started with Graphics Programming

Example 8.8Handling Window Events

TestWindowEventTestWindowEvent RunRun

Objective: Demonstrate handling the window events. Any subclass of the Window class can generate the following window events: window opened, closing, closed, activated, deactivated, iconified, and deiconified. This program creates a frame, listens to the window events, and displays a message to indicate the occurring event.