Java Applet and Graphics
description
Transcript of Java Applet and Graphics
![Page 1: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/1.jpg)
https://www.facebook.com/Oxus20
Java Applet
& Graphics
Java Applet
Java Graphics
Analog Clock
Prepared By: Khosrow Kian
Edited By: Abdul Rahman Sherzad
![Page 2: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/2.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/3.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/4.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/5.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/6.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/7.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/8.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/9.jpg)
9
https://www.facebook.com/Oxus20
![Page 10: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/10.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/11.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/12.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/13.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/14.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/15.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/16.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/17.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/18.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/19.jpg)
OUTPUT - Simple Calculator Example
19
https://www.facebook.com/Oxus20
![Page 20: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/20.jpg)
Example of Graphics and Applet
20
https://www.facebook.com/Oxus20
![Page 21: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/21.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/22.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/23.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/24.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/25.jpg)
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](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/26.jpg)
OUTPUT - Analog Clock Example
26
https://www.facebook.com/Oxus20
![Page 27: Java Applet and Graphics](https://reader034.fdocuments.in/reader034/viewer/2022042623/55386a3d550346f02f8b47cf/html5/thumbnails/27.jpg)
END
https://www.facebook.com/Oxus20
27