Friday, 27 March 2015

Java Applet

Analog clock in Applet

Analog clock can be created by using the Math class. Let's see the simple example:

Example of Analog clock in Applet:

import java.applet.*;  
import java.awt.*;  
import java.util.*;  
import java.text.*;  
  
public class B extends Applet implements Runnable {  
  
   int width, height;  
   Thread t = null;  
   boolean threadSuspended;  
   int hours=0, minutes=0, seconds=0;  
   String timeString = "";  
  
   public void init() {  
      width = getSize().width;  
      height = getSize().height;  
      setBackground( Color.black );  
   }  
  
   public void start() {  
      if ( t == null ) {  
         t = new Thread( this );  
         t.setPriority( Thread.MIN_PRIORITY );  
         threadSuspended = false;  
         t.start();  
      }  
      else {  
         if ( threadSuspended ) {  
            threadSuspended = false;  
            synchronized( this ) {  
               notify();  
            }  
         }  
      }  
   }  
  
   public void stop() {  
      threadSuspended = true;  
   }  
  
   public void run() {  
      try {  
         while (true) {  
  
            Calendar cal = Calendar.getInstance();  
            hours = cal.get( Calendar.HOUR_OF_DAY );  
            if ( hours > 12 ) hours -= 12;  
            minutes = cal.get( Calendar.MINUTE );  
            seconds = cal.get( Calendar.SECOND );  
  
            SimpleDateFormat formatter  
               = new SimpleDateFormat( "hh:mm:ss", Locale.getDefault() );  
            Date date = cal.getTime();  
            timeString = formatter.format( date );  
  
            // Now the thread checks to see if it should suspend itself  
            if ( threadSuspended ) {  
               synchronized( this ) {  
                  while ( threadSuspended ) {  
                     wait();  
                  }  
               }  
            }  
            repaint();  
            t.sleep( 1000 );  // interval specified in milliseconds  
         }  
      }  
      catch (Exception e) { }  
   }  
  
   void drawHand( double angle, int radius, Graphics g ) {  
      angle -= 0.5 * Math.PI;  
      int x = (int)( radius*Math.cos(angle) );  
      int y = (int)( radius*Math.sin(angle) );  
      g.drawLine( width/2, height/2, width/2 + x, height/2 + y );  
   }  
  
   void drawWedge( double angle, int radius, Graphics g ) {  
      angle -= 0.5 * Math.PI;  
      int x = (int)( radius*Math.cos(angle) );  
      int y = (int)( radius*Math.sin(angle) );  
      angle += 2*Math.PI/3;  
      int x2 = (int)( 5*Math.cos(angle) );  
      int y2 = (int)( 5*Math.sin(angle) );  
      angle += 2*Math.PI/3;  
      int x3 = (int)( 5*Math.cos(angle) );  
      int y3 = (int)( 5*Math.sin(angle) );  
      g.drawLine( width/2+x2, height/2+y2, width/2 + x, height/2 + y );  
      g.drawLine( width/2+x3, height/2+y3, width/2 + x, height/2 + y );  
      g.drawLine( width/2+x2, height/2+y2, width/2 + x3, height/2 + y3 );  
   }  
  
   public void paint( Graphics g ) {  
      g.setColor( Color.gray );  
      drawWedge( 2*Math.PI * hours / 12, width/5, g );  
      drawWedge( 2*Math.PI * minutes / 60, width/3, g );  
      drawHand( 2*Math.PI * seconds / 60, width/2, g );  
      g.setColor( Color.white );  
      g.drawString( timeString, 10, height-10 );  
   }  
}  

myapplet.html

<html>  
<body>  
<applet code="B.class" width="300" height="300">  
</applet>  
</body>  
</html>


Java Applet

Digital clock in Applet

Digital clock can be created by using the Calendar and SimpleDateFormat class. Let's see the simple example:

Example of Digital clock in Applet:

import java.applet.*;  
import java.awt.*;  
import java.util.*;  
import java.text.*;  
  
public class B extends Applet implements Runnable {  
  
   Thread t = null;  
   int hours=0, minutes=0, seconds=0;  
   String timeString = "";  
  
   public void init() {  
      setBackground( Color.green);  
   }  
  
   public void start() {  
        t = new Thread( this );  
        t.start();  
   }  
  
    
   public void run() {  
      try {  
         while (true) {  
  
            Calendar cal = Calendar.getInstance();  
            hours = cal.get( Calendar.HOUR_OF_DAY );  
            if ( hours > 12 ) hours -= 12;  
            minutes = cal.get( Calendar.MINUTE );  
            seconds = cal.get( Calendar.SECOND );  
  
            SimpleDateFormat formatter = new SimpleDateFormat("hh:mm:ss");  
            Date date = cal.getTime();  
            timeString = formatter.format( date );  
  
            repaint();  
            t.sleep( 1000 );  // interval given in milliseconds  
         }  
      }  
      catch (Exception e) { }  
   }  
  
    
  public void paint( Graphics g ) {  
      g.setColor( Color.blue );  
      g.drawString( timeString, 50, 50 );  
   }  
}  

In the above example, getX() and getY() method of MouseEvent is used to get the current x-axis and y-axis. The getGraphics() method of Component class returns the object of Graphics.

myapplet.html

<html>  
<body>  
<applet code="B.class" width="300" height="300">  
</applet>  
</body>  
</html>


Java Applet

EventHandling in Applet

As we perform event handling in AWT or Swing, we can perform it in applet also. Let's see the simple example of event handling in applet that prints a message by click on the button.

Example of EventHandling in applet:

import java.applet.*;  
import java.awt.*;  
import java.awt.event.*;  
public class B extends Applet implements ActionListener{  
Button b;  
TextField tf;  
  
public void init(){  
tf=new TextField();  
tf.setBounds(30,40,150,20);  
  
b=new Button("Click");  
b.setBounds(80,150,60,50);  
  
add(b);add(tf);  
b.addActionListener(this);  
  
setLayout(null);  
}  
  
 public void actionPerformed(ActionEvent e){  
  tf.setText("Welcome");  
 }   
}  

myapplet.html

<html>  
<body>  
<applet code="B.class" width="300" height="300">  
</applet>  
</body>  
</html>  













Java Applet

Displaying Image in Applet

Applet is mostly used in games and animation. For this purpose image is required to be displayed. The java.awt.Graphics class provide a method drawImage() to display the image.

Syntax of drawImage() method:

  1. public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer): is used draw the specified image.

How to get the object of Image:

The java.applet.Applet class provides getImage() method that returns the object of Image.
Syntax:

  1. public Image getImage(URL u, String image){}  

Other required methods of Applet class to display image:

  1. public URL getDocumentBase(): is used to return the URL of the document in which 
applet is embedded. 
   2. 
public URL getCodeBase(): is used to return the base URL.

Example of displaying image in applet:

  1. import java.awt.*;  
  2. import java.applet.*;  
  3.   
  4.   
  5. public class DisplayImage extends Applet {  
  6.   
  7.   Image picture;  
  8.   
  9.   public void init() {  
  10.     picture = getImage(getDocumentBase(),"sonoo.jpg");  
  11.   }  
  12.     
  13.   public void paint(Graphics g) {  
  14.     g.drawImage(picture, 30,30this);  
  15.   }  
  16.       
  17.   }  

myapplet.html

  1. <html>  
  2. <body>  
  3. <applet code="DisplayImage.class" width="300" height="300">  
  4. </applet>  
  5. </body>  
  6. </html>  













Java Applet

Displaying Graphics in Applet

java.awt.Graphics class provides many methods for graphics programming.

Commonly used methods of Graphics class:

  1. public abstract void drawString(String str, int x, int y): is used to draw the specified string.
  2. public void drawRect(int x, int y, int width, int height): draws a rectangle with the specified width and height.
  3. public abstract void fillRect(int x, int y, int width, int height): is used to fill rectangle with the default color and specified width and height.
  4. public abstract void drawOval(int x, int y, int width, int height): is used to draw oval with the specified width and height.
  5. public abstract void fillOval(int x, int y, int width, int height): is used to fill oval with the default color and specified width and height.
  6. public abstract void drawLine(int x1, int y1, int x2, int y2): is used to draw line between the points(x1, y1) and (x2, y2).
  7. public abstract boolean drawImage(Image img, int x, int y, ImageObserver observer): is used draw the specified image.
  8. public abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle): is used draw a circular or elliptical arc.
  9. public abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle): is used to fill a circular or elliptical arc.
  10. public abstract void setColor(Color c): is used to set the graphics current color to the specified color.
  11. public abstract void setFont(Font font): is used to set the graphics current font to the specified font.

Example of Graphics in applet:

  1. import java.applet.Applet;  
  2. import java.awt.*;  
  3.   
  4. public class GraphicsDemo extends Applet{  
  5.   
  6. public void paint(Graphics g){  
  7. g.setColor(Color.red);  
  8. g.drawString("Welcome",5050);  
  9. g.drawLine(20,30,20,300);  
  10. g.drawRect(70,100,30,30);  
  11. g.fillRect(170,100,30,30);  
  12. g.drawOval(70,200,30,30);  
  13.   
  14. g.setColor(Color.pink);  
  15. g.fillOval(170,200,30,30);  
  16. g.drawArc(90,150,30,30,30,270);  
  17. g.fillArc(270,150,30,30,0,180);  
  18.   
  19. }  
  20. }  

myapplet.html

  1. <html>  
  2. <body>  
  3. <applet code="GraphicsDemo.class" width="300" height="300">  
  4. </applet>  
  5. </body>  
  6. </html>  














Java Applet

Applet is a special type of program that is embedded in the webpage to generate the dynamic content. It runs inside the browser and works at client side.

Advantage of Applet

There are many advantages of applet. They are as follows:
  • It works at client side so less response time.
  • Secured
  • It can be executed by browsers running under many plateforms, including Linux, Windows, Mac Os etc.

Drawback of Applet

  • Plugin is required at client browser to execute applet.

Hierarchy of Applet

hierarchy of applet
As displayed in the above diagram, Applet class extends Panel. Panel class extends Container
which is the subclass of Component.

Lifecycle of Java Applet

  1. Applet is initialized.
  2. Applet is started.
  3. Applet is painted.
  4. Applet is stopped.
  5. Applet is destroyed.

Lifecycle methods for Applet:

The java.applet.Applet class 4 life cycle methods and java.awt.Component class provides 1 life
cycle methods for an applet.

java.applet.Applet class

For creating any applet java.applet.Applet class must be inherited. It provides 4 life cycle
methods of applet.
  1. public void init(): is used to initialized the Applet. It is invoked only once.
  2. public void start(): is invoked after the init() method or browser is maximized. It is used to start the Applet.
  3. public void stop(): is used to stop the Applet. It is invoked when Applet is stop or browser is minimized.
  4. public void destroy(): is used to destroy the Applet. It is invoked only once.

java.awt.Component class

The Component class provides 1 life cycle method of applet.
  1. public void paint(Graphics g): is used to paint the Applet. It provides Graphics class object that can be used for drawing oval, rectangle, arc etc.

Who is responsible to manage the life cycle of an applet?

Java Plug-in software.

How to run an Applet?

There are two ways to run an applet
  1. By html file.
  2. By appletViewer tool (for testing purpose).

Simple example of Applet by html file:

To execute the applet by html file, create an applet and compile it. After that create an html file and place the applet code in html file. Now click the html file.
  1. //First.java  
  2. import java.applet.Applet;  
  3. import java.awt.Graphics;  
  4. public class First extends Applet{  
  5.   
  6. public void paint(Graphics g){  
  7. g.drawString("welcome",150,150);  
  8. }  
  9.   
  10. }  

myapplet.html

  1. <html>  
  2. <body>  
  3. <applet code="First.class" width="300" height="300">  
  4. </applet>  
  5. </body>  
  6. </html

Simple example of Applet by appletviewer tool:

To execute the applet by appletviewer tool, create an applet that contains applet tag in comment and compile it. After that run it by: appletviewer First.java. Now Html file is not required but it is for testing purpose only.
  1. //First.java  
  2. import java.applet.Applet;  
  3. import java.awt.Graphics;  
  4. public class First extends Applet{  
  5.   
  6. public void paint(Graphics g){  
  7. g.drawString("welcome to applet",150,150);  
  8. }  
  9.   
  10. }  
  11. /* 
  12. <applet code="First.class" width="300" height="300"> 
  13. </applet> 
  14. */  
To execute the applet by appletviewer tool, write in command prompt:
c:\>javac First.java
c:\>appletviewer First.java

Layout Managers

LayoutManagers:

The LayoutManagers are used to arrange components in a particular manner. LayoutManager is an interface that is implemented by all the classes of layout managers. There are following classes that represents the layout managers:
  1. java.awt.BorderLayout
  2. java.awt.FlowLayout
  3. java.awt.GridLayout
  4. java.awt.CardLayout
  5. java.awt.GridBagLayout
  6. javax.swing.BoxLayout
  7. javax.swing.GroupLayout
  8. javax.swing.ScrollPaneLayout
  9. javax.swing.SpringLayout etc.

BorderLayout:

The BorderLayout is used to arrange the components in five regions: north, south, east, west and center. Each region (area) may contain one component only. It is the default layout of frame or window. The BorderLayout provides five constants for each region:
  1. public static final int NORTH
  2. public static final int SOUTH
  3. public static final int EAST
  4. public static final int WEST
  5. public static final int CENTER

Constructors of BorderLayout class:

  • BorderLayout(): creates a border layout but with no gaps between the components.
  • JBorderLayout(int hgap, int vgap): creates a border layout with the given horizontal and vertical gaps between the components.

Example of BorderLayout class:

  1. import java.awt.*;  
  2. import javax.swing.*;  
  3.   
  4. public class Border {  
  5. JFrame f;  
  6. Border(){  
  7.     f=new JFrame();  
  8.       
  9.     JButton b1=new JButton("NORTH");;  
  10.     JButton b2=new JButton("SOUTH");;  
  11.     JButton b3=new JButton("EAST");;  
  12.     JButton b4=new JButton("WEST");;  
  13.     JButton b5=new JButton("CENTER");;  
  14.       
  15.     f.add(b1,BorderLayout.NORTH);  
  16.     f.add(b2,BorderLayout.SOUTH);  
  17.     f.add(b3,BorderLayout.EAST);  
  18.     f.add(b4,BorderLayout.WEST);  
  19.     f.add(b5,BorderLayout.CENTER);  
  20.       
  21.     f.setSize(300,300);  
  22.     f.setVisible(true);  
  23. }  
  24. public static void main(String[] args) {  
  25.     new Border();  
}  
BorderLayout class

GridLayout

The GridLayout is used to arrange the components in rectangular grid. One component is displayed in each rectangle.

Constructors of GridLayout class:

  1. GridLayout(): creates a grid layout with one column per component in a row.
  2. GridLayout(int rows, int columns): creates a grid layout with the given rows and columns but no gaps between the components.
  3. GridLayout(int rows, int columns, int hgap, int vgap): creates a grid layout with the given rows and columns alongwith given horizontal and vertical gaps.

Example of GridLayout class:


  1. import java.awt.*;  
  2. import javax.swing.*;  
  3.   
  4. public class MyGridLayout{  
  5. JFrame f;  
  6. MyGridLayout(){  
  7.     f=new JFrame();  
  8.       
  9.     JButton b1=new JButton("1");  
  10.     JButton b2=new JButton("2");  
  11.     JButton b3=new JButton("3");  
  12.     JButton b4=new JButton("4");  
  13.     JButton b5=new JButton("5");  
  14.         JButton b6=new JButton("6");  
  15.         JButton b7=new JButton("7");  
  16.     JButton b8=new JButton("8");  
  17.         JButton b9=new JButton("9");  
  18.           
  19.     f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);  
  20.     f.add(b6);f.add(b7);f.add(b8);f.add(b9);  
  21.   
  22.     f.setLayout(new GridLayout(3,3));  
  23.     //setting grid layout of 3 rows and 3 columns  
  24.   
  25.     f.setSize(300,300);  
  26.     f.setVisible(true);  
  27. }  
  28. public static void main(String[] args) {  
  29.     new MyGridLayout();  
  30. }  
  31. }  


FlowLayout

The FlowLayout is used to arrange the components in a line, one after another (in a flow). It is the default layout of applet or panel.

Fields of FlowLayout class:

  1. public static final int LEFT
  2. public static final int RIGHT
  3. public static final int CENTER
  4. public static final int LEADING
  5. public static final int TRAILING

Constructors of FlowLayout class:

  1. FlowLayout(): creates a flow layout with centered alignment and a default 5 unit horizontal and vertical gap.
  2. FlowLayout(int align): creates a flow layout with the given alignment and a default 5 unit horizontal and vertical gap.
  3. FlowLayout(int align, int hgap, int vgap): creates a flow layout with the given alignment and the given horizontal and vertical gap.

Example of FlowLayout class:

  1. import java.awt.*;  
  2. import javax.swing.*;  
  3.   
  4. public class MyFlowLayout{  
  5. JFrame f;  
  6. MyFlowLayout(){  
  7.     f=new JFrame();  
  8.       
  9.     JButton b1=new JButton("1");  
  10.     JButton b2=new JButton("2");  
  11.     JButton b3=new JButton("3");  
  12.     JButton b4=new JButton("4");  
  13.     JButton b5=new JButton("5");  
  14.               
  15.     f.add(b1);f.add(b2);f.add(b3);f.add(b4);f.add(b5);  
  16.       
  17.     f.setLayout(new FlowLayout(FlowLayout.RIGHT));  
  18.     //setting flow layout of right alignment  
  19.   
  20.     f.setSize(300,300);  
  21.     f.setVisible(true);  
  22. }  
  23. public static void main(String[] args) {  
  24.     new MyFlowLayout();  
  25. }  
  26. }