Drawing Shapes Graphical Applications and Frame Windows

Download Report

Transcript Drawing Shapes Graphical Applications and Frame Windows

Java Concepts
Chapter 2 –
Graphical Applications
Mr. Smith
AP Computer Science A
Graphical Applications
and Frame Windows
Objective


Overview of drawing graphical
applications
You will be able to draw basic graphics in
a frame window (more attractive than a
console window)
Construct a frame of a certain size
Construct a component (such as a
rectangles, circles, or a combination)
 Add the component to the frame
 Make the frame visible


Graphical Applications
and Frame Windows
Constructing a Frame

Construct an object of the JFrame class
JFrame frame = new JFrame();

Set the size of the frame
frame.setSize(300, 400);
//Frame will be 300 pixels wide and 400 pixels tall
//Omitting this step will make the frame 0x0

Set the title of the frame (optional)
frame.setTitle("Graphical Application");

Set the "default close operation".
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//When the user closes the frame, the program will end

Make the frame visible
frame.setVisible(true);
Graphical Applications
and Frame Windows
Creating a Rectangle Component Object



In order to draw something in the frame, you must
first create a component object and then add it to the
frame
A component can consist of multiple graphics objects
Here are some of the classes that need to be imported
in order to create a component object that draws a
rectangle:
import java.awt.Graphics;
//primitive class – stores graphics state
//including the current color, font, etc.
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
//Class used to draw shapes
//Rectangles class
//Used to draw in a frame
Graphical Applications
and Frame Windows
Example of a Rectangle Component Object Class
(used for creating, drawing, and positioning Rectangle objects)
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
//Allows you to manipulate the graphics
//state (color, etc.)
//Contains methods to draw shapes
public class RectangleComponent extends JComponent
{
//Place all the drawing instructions inside paintComponent method
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g; //Cast to recover Graphics2D
Rectangle box = new Rectangle(5, 10, 20, 30); //Construct rectangle
g2.draw(box);
//Draw rectangle
box.translate(15, 25);
//Move rectangle 15 units right and 25 down
g2.draw(box);
//Draw rectangle again
}
}
Graphical Applications
and Frame Windows
Drawing a Rectangle Component


Construct a frame (see previous slide)
Construct an object of your component class
RectangleComponent component = new RectangleComponent();

Add the component to the frame
frame.add(component);

Make the frame visible (see previous slide)
Graphical Applications
and Frame Windows
Write a Client Program to View the Rectangles
(used for instantiating the RectangleComponent object and adding it to the frame)
import javax.swing.JFrame;
public class RectangleViewer
{
public static void main(String [] args)
{
JFrame frame = new JFrame();
frame.setSize(300, 400);
frame.setTitle("Graphics Application");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
RectangleComponent component = new RectangleComponent();
frame.add(component);
frame.setVisible(true);
}
}
Graphical Applications
and Frame Windows
Drawing a Face using Basic Shapes



You must first construct a "face" component and then add it to
the frame
The face component will consist of different types of graphical
objects for the head, eyes, and mouth
Here are some of the classes that need to be imported in order to
use graphics:
import
import
import
import
Import
Import
Import
import
java.awt.Color;
//color class
java.awt.Graphics; //primitive graphics class
java.awt.Graphics2D;//Contains methods to draw
java.awt.Rectangle; //Rectangles class
java.awt.geom.Ellipse2D;
java.awt.geom.Line2D;
javax.swing.JPanel;
javax.swing.JComponent;
shapes
Graphical Applications
and Frame Windows
Write a Face Component Class
(used for creating, drawing, and positioning a face)
import
import
import
import
import
import
import
import
java.awt.Color;
java.awt.Graphics;
java.awt.Graphics2D;
java.awt.Rectangle;
java.awt.geom.Ellipse2D;
java.awt.geom.Line2D;
javax.swing.JPanel;
javax.swing.JComponent;
//color class
//primitive graphics class
//Extends Graphics class
//Rectangles class
//Ellipse and circle class
//Line class
public class FaceComponent extends JComponent
{
//Place drawing instructions inside this method
public void paintComponent(Graphics g)
{
Graphics2D g2 = (Graphics2D) g;
//Make graphics 2D
Ellipse2D.Double head = new Ellipse2D.Double(5, 10, 100, 150); //Construct head (x, y, width, height)
g2.draw(head);
//Draw head
Line2D.Double eye1 = new Line2D.Double(25, 70, 45, 90); //Construct left eye (x1, y1, x2, y2)
g2.draw(eye1);
Line2D.Double eye2 = new Line2D.Double(85, 70, 65, 90); //Construct right eye (x1, y1, x2, y2)
g2.draw(eye2);
Rectangle mouth = new Rectangle(30, 130, 50, 5);
//Construct mouth (x, y, width, height)
g2.setColor(Color.RED);
//Color of mouth
g2.fill(mouth);
//Fill mouth with red
g2.setColor(Color.BLUE);
g2.drawString("Hello, Class!!!", 5, 175);
//Draw greeting (“message”, x, y)
}
}
Graphical Applications
and Frame Windows
Write a Client Program to View the Face
(used for creating the FaceComponent object and adding it to the frame)
import javax.swing.JFrame;
public class FaceViewer
{
public static void main(String [] args)
{
JFrame frame = new JFrame();
//Instantiate new frame
frame.setSize(300, 400);
//Set frame size
frame.setTitle("Alien Face");
//Set frame title
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FaceComponent component = new FaceComponent(); //Instantiate component
frame.add(component);
//Add component to frame
frame.setVisible(true);
//Set frame visible
}
}
Graphical Applications
and Frame Windows
Classwork/Homework Assignment

Download the following classes from my website:
 FaceComponent – Face drawing object
 FaceViewer – View the face






Use these classes as a starting point for your component
class and client program to draw it in a frame
Refer to Java Concepts 2.11-2.13 for drawing other graphical
objects (ellipse, lines, rectangles, etc.)
You can also refer to the link on my website named
Drawing Geometric Shapes
Use your imagination and draw an object of your choice
Remember to include your name (JohnDoe) at the end of all
classes you create, so I know who created them
Once these are finished, we will show them to the class