java applet and graphics

27
https://www.facebook.com/Oxus20 [email protected] Java Applet & Graphics Java Applet Java Graphics Analog Clock Prepared By: Khosrow Kian Edited By: Abdul Rahman Sherzad

Upload: oxus-20

Post on 22-Apr-2015

236 views

Category:

Education


0 download

DESCRIPTION

This presentation introduces Java Applet and Java Graphics in detail with examples and finally using the concept of both applet and graphics code the analog clock project to depict how to use them in real life challenges and applications.

TRANSCRIPT

Page 1: Java Applet and Graphics

https://www.facebook.com/Oxus20

[email protected]

Java Applet

& Graphics

Java Applet

Java Graphics

Analog Clock

Prepared By: Khosrow Kian

Edited By: Abdul Rahman Sherzad

Page 2: Java Applet and Graphics

Table of Contents

» Java Applet

˃ Introduction and Concept

˃ Demos

» Graphics

˃ Introduction and Concept

» Java Applet Code

2

https://www.facebook.com/Oxus20

Page 3: Java Applet and Graphics

Java Applet

» An applet is a subclass of Panel

˃ It is a container which can hold GUI components

˃ It has a graphics context which can be used to draw images

» An applet embedded within an HTML page

˃ Applets are defined using the <applet> tag

˃ Its size and location are defined within the tag

» Java Virtual Machine is required for the browsers to

execute the applet 3

https://www.facebook.com/Oxus20

Page 4: Java Applet and Graphics

Java Applets vs. Applications » Applets - Java programs that can run over the

Internet using a browser. ˃ The browser either contains a JVM (Java Virtual Machine) or loads the Java

plugin

˃ Applets do not require a main(), but in general will have a paint().

˃ An Applet also requires an HTML file before it can be executed.

˃ Java Applets are also compiled using the javac command, but are run either with a browser or with the applet viewer command.

» Applications - Java programs that run directly on your machine. ˃ Applications must have a main().

˃ Java applications are compiled using the javac command and run using the java command. 4

https://www.facebook.com/Oxus20

Page 5: Java Applet and Graphics

Java Applets vs. Applications Feature Application Applet

main() method Present Not present

Execution Requires JRE Requires a browser like Chrome, Firefox, IE, Safari, Opera, etc.

Nature Called as stand-alone application as application can be executed from command prompt

Requires some third party tool help like a browser to execute

Restrictions Can access any data or software available on the system

cannot access any thing on the system except browser’s services

Security Does not require any security Requires highest security for the system as they are untrusted

5

https://www.facebook.com/Oxus20

Page 6: Java Applet and Graphics

Java Applet Advantages

» Execution of applets is easy in a Web browser and does

not require any installation or deployment procedure

in real-time programming.

» Writing and displaying (just opening in a browser)

graphics and animations is easier than applications.

» In GUI development, constructor, size of

frame, window closing code etc. are not required.

6

https://www.facebook.com/Oxus20

Page 7: Java Applet and Graphics

Java Applet Methods

» init()

˃ Called when applet is loaded onto user’s machine.

» start()

˃ Called when applet becomes visible (page called up).

» stop()

˃ Called when applet becomes hidden (page loses focus).

» destroy()

˃ Guaranteed to be called when browser shuts down.

7

https://www.facebook.com/Oxus20

Page 8: Java Applet and Graphics

Introduction to Java Graphics » Java contains support for graphics that enable

programmers to visually enhance applications

» Java contains many more sophisticated drawing capabilities

as part of the Java 2D API

˃ Color

˃ Font and FontMetrics

˃ Graphics2D

˃ Polygon

˃ BasicStroke

˃ GradientPaint and TexturePaint

˃ Java 2D shape classes

8

https://www.facebook.com/Oxus20

Page 9: Java Applet and Graphics

9

https://www.facebook.com/Oxus20

Page 10: Java Applet and Graphics

Java Coordinate System

» Upper-Left Corner of a GUI component has the coordinates (0, 0)

» X-Coordinate (horizontal coordinate)

˃ horizontal distance moving right from the left of the screen

» Y-Coordinate (vertical coordinate)

˃ vertical distance moving down from the top of the screen

» Coordinate units are measured in pixels.

˃ A pixel is a display monitor’s smallest unit of resolution.

https://www.facebook.com/Oxus20

10

Page 11: Java Applet and Graphics

All Roads Lead to JComponent

» Every Swing object inherits from JComponent

» JComponent has a few methods that can be overridden in

order to draw special things

˃ public void paint(Graphics g)

˃ public void paintComponent(Graphics g)

˃ public void repaint()

» So if we want custom drawing, we take any JComponent and

extend it...

˃ JPanel is a good choice

11

https://www.facebook.com/Oxus20

Page 12: Java Applet and Graphics

Draw Line Example import java.awt.Graphics;

import javax.swing.JApplet;

public class DrawLine extends JApplet {

@Override

public void init() {

}

public void paint(Graphics g){

g.drawLine(20,20, 100,100);

}

}

https://www.facebook.com/Oxus20

12

Page 13: Java Applet and Graphics

Draw Rectangles Example import java.awt.Graphics;

import javax.swing.JApplet;

public class DrawRect extends JApplet {

@Override

public void init() {

super.init();

}

public void paint(Graphics g) {

g.drawRect(20, 20, 100, 100);

g.fillRect(130, 20, 100, 100);

g.drawRoundRect(240, 20, 100, 100, 10, 10);

}

}

https://www.facebook.com/Oxus20

13

Page 14: Java Applet and Graphics

Draw Ovals Example import java.awt.Graphics;

import javax.swing.JApplet;

public class DrawOval extends JApplet {

@Override

public void init() {

}

public void paint(Graphics g) {

g.drawOval(20, 20, 100, 100);

g.fillOval(130, 20, 100, 100);

}

}

https://www.facebook.com/Oxus20

14

Page 15: Java Applet and Graphics

Simple Calculator Example import java.applet.Applet;

import java.awt.BorderLayout;

import java.awt.Button;

import java.awt.Font;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class Calculator extends Applet implements ActionListener {

String operators[] = { "+", "-", "*", "/", "=", "C" };

String operator = "";

int previousValue = 0;

Button buttons[] = new Button[16];

TextField txtResult = new TextField(10);

15

https://www.facebook.com/Oxus20

Page 16: Java Applet and Graphics

public void init() {

setLayout(new BorderLayout());

add(txtResult, "North");

txtResult.setText("0");

Panel p = new Panel();

p.setLayout(new GridLayout(4, 4));

for (int i = 0; i < 16; i++) {

if (i < 10) {

buttons[i] = new Button(String.valueOf(i));

} else {

buttons[i] = new Button(operators[i % 10]);

}

buttons[i].setFont(new Font("Verdana", Font.BOLD, 18));

p.add(buttons[i]);

add(p, "Center");

buttons[i].addActionListener(this);

}

} 16

https://www.facebook.com/Oxus20

Page 17: Java Applet and Graphics

public void actionPerformed(ActionEvent ae) {

int result = 0;

String caption = ae.getActionCommand();

int currentValue = Integer.parseInt(txtResult.getText());

if (caption.equals("C")) {

txtResult.setText("0");

previousValue = 0;

currentValue = 0;

result = 0;

operator = "";

} else if (caption.equals("=")) {

result = 0;

if (operator == "+")

result = previousValue + currentValue;

else if (operator == "-")

result = previousValue - currentValue;

else if (operator == "*")

result = previousValue * currentValue;

else if (operator == "/")

result = previousValue / currentValue;

txtResult.setText(String.valueOf(result));

}

17

https://www.facebook.com/Oxus20

Page 18: Java Applet and Graphics

End - Simple Calculator Example else if (caption.equals("+") || caption.equals("-")

|| caption.equals("*") || caption.equals("/")) {

previousValue = currentValue;

operator = caption;

txtResult.setText("0");

} else {

int value = currentValue * 10 + Integer.parseInt(caption);

txtResult.setText(String.valueOf(value));

}

}

}

18

https://www.facebook.com/Oxus20

Page 19: Java Applet and Graphics

OUTPUT - Simple Calculator Example

19

https://www.facebook.com/Oxus20

Page 20: Java Applet and Graphics

Example of Graphics and Applet

20

https://www.facebook.com/Oxus20

Page 21: Java Applet and Graphics

Analog Clock Example

21

https://www.facebook.com/Oxus20

import java.applet.Applet;

import java.awt.BasicStroke;

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.util.Calendar;

public class AnalogClock extends Applet implements Runnable {

private static final long serialVersionUID = 1L;

private static final double TWO_PI = 2.0 * Math.PI;

private Calendar nw = Calendar.getInstance();

int width = 200, hight = 200;

int xcent = width / 2, ycent = hight / 2;

int minhand, maxhand;

double rdns;

int dxmin, dymin, dxmax, dymax;

double radins, sine, cosine;

double fminutes;

Thread t = null;

Boolean stopFlag;

Page 22: Java Applet and Graphics

22

https://www.facebook.com/Oxus20

public void start() {

t = new Thread(this);

stopFlag = false;

t.start();

}

public void run() {

for (;;) {

try {

updateTime();

repaint();

Thread.sleep(1000);

if (stopFlag)

break;

} catch (InterruptedException e) {

}

}

}

public void stop() {

stopFlag = true;

t = null;

}

private void updateTime() {

nw.setTimeInMillis(System.currentTimeMillis());

}

Page 23: Java Applet and Graphics

23

https://www.facebook.com/Oxus20

public void paint(Graphics g) {

g.setFont(new Font("Gabriola", Font.BOLD + Font.ITALIC, 160));

g.setColor(Color.RED);

g.drawString("XUS", 300, 270);

g.setFont(new Font("Consolas", Font.BOLD + Font.ITALIC, 100));

g.setColor(Color.GREEN);

g.drawString("20", 550, 270);

g.setColor(Color.black);

g.fillOval(100, 100, 200, 200);

Graphics2D g1 = (Graphics2D) g;

int hours = nw.get(Calendar.HOUR);

int minutes = nw.get(Calendar.MINUTE);

int seconds = nw.get(Calendar.SECOND);

int millis = nw.get(Calendar.MILLISECOND);

minhand = width / 8;

maxhand = width / 2;

rdns = (seconds + ((double) millis / 1000)) / 60.0;

drw(g1, rdns, 0, maxhand - 20);

g1.setColor(Color.BLUE);

g1.drawString(

String.format("%02d : %02d :%02d ", hours, minutes, seconds),

minhand + 150, maxhand + 170);

Page 24: Java Applet and Graphics

24

https://www.facebook.com/Oxus20

minhand = 0; // Minute hand starts in middle.

maxhand = width / 3;

fminutes = (minutes + rdns) / 60.0;

drw(g1, fminutes, 0, maxhand);

minhand = 0; // Minute hand starts in middle.

maxhand = width / 4;

drw(g1, (hours + fminutes) / 12.0, 0, maxhand);

g1.setColor(Color.gray); // set b ackground of circle

g1.drawOval(100, 100, 200, 200); // draw a circle

g1.setColor(Color.WHITE);

g1.setFont(new Font("Consulas", Font.BOLD + Font.ITALIC, 15));

g1.drawString("12", 190, 120);

g1.drawString("6", 195, 290);

g1.drawString("3", 280, 200);

g1.drawString("6", 110, 200);

g1.setFont(new Font("Consulas", Font.BOLD + Font.ITALIC, 15));

g1.setStroke(new BasicStroke(2, BasicStroke.JOIN_MITER,

BasicStroke.JOIN_BEVEL));

}

Page 25: Java Applet and Graphics

End - Analog Clock Example public void drw(Graphics2D g, double prct, int minRadius, int maxRadius) {

radins = (0.5 - prct) * TWO_PI;

sine = Math.sin(radins);

cosine = Math.cos(radins);

dxmin = xcent + (int) (minRadius * sine);

dymin = ycent + (int) (minRadius * cosine);

dxmax = xcent + (int) (maxRadius * sine);

dymax = ycent + (int) (maxRadius * cosine);

g.setColor(Color.WHITE);

g.setBackground(Color.cyan);

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

g.drawLine(dxmin + 100, dymin + 100, dxmax + 100, dymax + 100);

}

}

25

https://www.facebook.com/Oxus20

Page 26: Java Applet and Graphics

OUTPUT - Analog Clock Example

26

https://www.facebook.com/Oxus20

Page 27: Java Applet and Graphics

END

https://www.facebook.com/Oxus20

27