<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>java clock | Student Projects</title>
	<atom:link href="https://studentprojects.in/tag/java-clock/feed/" rel="self" type="application/rss+xml" />
	<link>https://studentprojects.in</link>
	<description>Microcontroller projects, Circuit Diagrams, Project Ideas</description>
	<lastBuildDate>Thu, 03 Dec 2009 11:49:36 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.1.7</generator>
	<item>
		<title>Java program to display a clock</title>
		<link>https://studentprojects.in/software-development/java/java-programs/advanced/java-program-to-display-a-clock/</link>
					<comments>https://studentprojects.in/software-development/java/java-programs/advanced/java-program-to-display-a-clock/#comments</comments>
		
		<dc:creator><![CDATA[Editorial Team]]></dc:creator>
		<pubDate>Thu, 03 Dec 2009 11:45:54 +0000</pubDate>
				<category><![CDATA[Advanced programs]]></category>
		<category><![CDATA[download programs]]></category>
		<category><![CDATA[Java codes]]></category>
		<category><![CDATA[java clock]]></category>
		<category><![CDATA[clock program]]></category>
		<guid isPermaLink="false">http://studentprojects.in/?p=974</guid>

					<description><![CDATA[<p>background_ = new GSegment();<br />
      GStyle backgroundStyle = new GStyle();<br />
      backgroundStyle.setBackgroundColor (new Color (122, 136, 161));<br />
      backgroundStyle.setForegroundColor (new Color (0, 0, 0));<br />
      background_.setStyle (backgroundStyle);<br />
      addSegment (background_);</p>
<p>The post <a href="https://studentprojects.in/software-development/java/java-programs/advanced/java-program-to-display-a-clock/">Java program to display a clock</a> first appeared on <a href="https://studentprojects.in">Student Projects</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Program by Avinash Kumar Pandey</p>
<pre lang="java">
import java.util.Calendar;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.*;

import javax.swing.*;

import no.geosoft.cc.geometry.Geometry;
import no.geosoft.cc.geometry.Matrix4x4;
import no.geosoft.cc.graphics.*;

/**
 * Graphics program. Demonstrates:
 *
 * <ul>
 * <li> Advaced geometry generation
 * <li> Dynamic update
 * <li> Threading
 * </ul>
 * 
*/   
public class Demo23 extends JFrame
{
  public Demo23()
  {
    super ("G Graphics Library - Demo 23");    
    setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    
    // Create the graphic canvas
    GWindow window = new GWindow (new Color (210, 235, 255));
    getContentPane().add (window.getCanvas());
    
    // Create scene with default viewport and world extent settings
    GScene scene = new GScene (window);
    double w0[] = {  0.0,   0.0, 0.0};
    double w1[] = {1000.0,   0.0, 0.0};
    double w2[] = {  0.0, 1000.0, 0.0};
    scene.setWorldExtent (w0, w1, w2);

    // Create clock
    GClock clock1 = new GClock (500, 500, 350);
    scene.add (clock1);

    // GClock clock2 = new GClock (40, 80, 15);
    // scene.add (clock2);

    pack();
    setSize (new Dimension (500, 500));
    setVisible (true);

    window.startInteraction (new ZoomInteraction (scene));

    Timer timer = new Timer (true);
    timer.schedule (new Ticker (clock1), 0, 1000);
  }
 
  /**
   * Defines the geometry and presentation for the sample
   * graphic object.
   */   
  private class GClock extends GObject
  {
    private double      x0_, y0_;
    private double      radius_;
    private GSegment    background_;
    private GSegment    disc_;
    private GSegment[]  ticks_;
    private GSegment[]  labels_;
    private GSegment    hourHandle_;
    private GSegment    minuteHandle_;
    private GSegment    secondHandle_;
    private GSegment    brand_;
    private double[]    hourHandleGeometry_;
    private double[]    minuteHandleGeometry_;
    private double[]    secondHandleGeometry_;
            
    public GClock (double x0, double y0, double radius)
    {
      x0_     = x0;
      y0_     = y0;
      radius_ = radius;

      background_ = new GSegment();
      GStyle backgroundStyle = new GStyle();
      backgroundStyle.setBackgroundColor (new Color (122, 136, 161));
      backgroundStyle.setForegroundColor (new Color (0, 0, 0));
      background_.setStyle (backgroundStyle);
      addSegment (background_);
      
      disc_ = new GSegment();
      GStyle discStyle = new GStyle();
      discStyle.setBackgroundColor (new Color (255, 255, 255));
      discStyle.setForegroundColor (new Color (255, 255, 255));
      disc_.setStyle (discStyle);
      addSegment (disc_);

      ticks_ = new GSegment[60];
      GStyle minuteStyle = new GStyle();
      minuteStyle.setForegroundColor (new Color (0, 0, 0));
      minuteStyle.setLineWidth (1);

      GStyle tickStyle = (GStyle) minuteStyle.clone();
      tickStyle.setLineWidth (3);
      
      for (int i = 0; i < 60; i++) {
        ticks_[i] = new GSegment();
        ticks_[i].setStyle (i % 5 == 0 ? tickStyle : minuteStyle);
        addSegment (ticks_[i]);
      }

      labels_ = new GSegment[12];
      GStyle labelStyle = new GStyle();
      labelStyle.setForegroundColor (new Color (0, 0, 0));
      labelStyle.setLineStyle (GStyle.LINESTYLE_INVISIBLE);
      labelStyle.setFont (new Font ("Dialog", Font.BOLD, 24));
      for (int i = 0; i < 12; i++) {
        labels_[i] = new GSegment();
        labels_[i].setStyle (labelStyle);
        int hour = (14 - i) % 12 + 1;
        labels_[i].setText (new GText (Integer.toString (hour)));
        addSegment (labels_[i]);
      }

      brand_ = new GSegment();
      GStyle brandStyle = new GStyle();
      brandStyle.setForegroundColor (new Color (0, 0, 0));
      brandStyle.setFont (new Font ("Times", Font.PLAIN, 12));
      brandStyle.setLineStyle (GStyle.LINESTYLE_INVISIBLE);
      brand_.setStyle (brandStyle);
      brand_.setText (new GText ("GeoSoft", GPosition.MIDDLE));
      addSegment (brand_);

      GStyle handleStyle = new GStyle();
      handleStyle.setForegroundColor (new Color (0.0f, 0.0f, 0.0f, 0.5f));
      handleStyle.setBackgroundColor (new Color (0.0f, 0.0f, 0.0f, 0.3f));
      handleStyle.setLineWidth (1);      

      GStyle secondHandleStyle = new GStyle();
      secondHandleStyle.setForegroundColor (new Color (255, 0, 0));
      secondHandleStyle.setBackgroundColor (new Color (255, 0, 0));
      secondHandleStyle.setLineWidth (1);      
      
      hourHandle_ = new GSegment();
      hourHandle_.setStyle (handleStyle);
      addSegment (hourHandle_);

      hourHandleGeometry_ = new double[]
                            {- 0.10*radius_, - 0.04*radius_,
                             - 0.10*radius_, + 0.04*radius_,
                             + 0.60*radius_, + 0.04*radius_,
                             + 0.65*radius_, 0.0,
                             + 0.60*radius_, - 0.04*radius_,
                             - 0.10*radius_, - 0.04*radius_};
      
      minuteHandle_ = new GSegment();
      minuteHandle_.setStyle (handleStyle);      
      addSegment (minuteHandle_);

      minuteHandleGeometry_ = new double[]
                            {- 0.10*radius_, - 0.04*radius_,
                             - 0.10*radius_, + 0.04*radius_,
                             + 0.90*radius_, + 0.04*radius_,
                             + 0.95*radius_, 0.0,
                             + 0.90*radius_, - 0.04*radius_,
                             - 0.10*radius_, - 0.04*radius_};

      secondHandle_ = new GSegment();
      secondHandle_.setStyle (secondHandleStyle);
      addSegment (secondHandle_);

      secondHandleGeometry_ = new double[]
                            {- 0.10*radius_, - 0.02*radius_,
                             + 0.85*radius_, 0.0,
                             - 0.10*radius_, + 0.02*radius_,
                             - 0.10*radius_, - 0.02*radius_};
    }

    private void update()
    {
      Calendar time = Calendar.getInstance();

      int hour   = time.get (Calendar.HOUR_OF_DAY);
      int minute = time.get (Calendar.MINUTE);
      int second = time.get (Calendar.SECOND);
      int secondOfDay = second + minute*60 + hour*60*60;

      double hourAngle = Math.PI / 2.0 -
                         (double) secondOfDay / (24.0 * 60.0 * 60.0) *
                         Math.PI * 4.0;

      secondOfDay -= hour*60*60;

      double minuteAngle = Math.PI / 2.0 -
                           (double) secondOfDay / (60.0 * 60.0) *
                           Math.PI * 2.0;

      secondOfDay -= minute*60;

      double secondAngle = Math.PI / 2.0 -
                           (double) secondOfDay / 60.0 *
                           Math.PI * 2.0;
      
      double[] geometry = new double[hourHandleGeometry_.length];
      System.arraycopy (hourHandleGeometry_, 0, geometry, 0,
                        hourHandleGeometry_.length);
      Matrix4x4 m = new Matrix4x4();
      m.rotateZ (hourAngle);
      m.translate (x0_, y0_, 0.0);
      m.transformXyPoints (geometry);
      hourHandle_.setGeometryXy (geometry);

      geometry = new double[minuteHandleGeometry_.length];
      System.arraycopy (minuteHandleGeometry_, 0, geometry, 0,
                        minuteHandleGeometry_.length);
      m = new Matrix4x4();
      m.rotateZ (minuteAngle);
      m.translate (x0_, y0_, 0.0);      
      m.transformXyPoints (geometry);
      minuteHandle_.setGeometryXy (geometry);

      geometry = new double[secondHandleGeometry_.length];
      System.arraycopy (secondHandleGeometry_, 0, geometry, 0,
                        secondHandleGeometry_.length);
      m = new Matrix4x4();
      m.rotateZ (secondAngle);
      m.translate (x0_, y0_, 0.0);      
      m.transformXyPoints (geometry);
      secondHandle_.setGeometryXy (geometry);
    }
    
    public void draw()
    {
      background_.setGeometryXy (Geometry.createCircle (x0_, y0_, radius_ * 1.2));
      disc_.setGeometryXy (Geometry.createCircle (x0_, y0_, radius_));

      for (int i = 0; i < 60; i++) {
        double x0 = radius_ * (i % 5 == 0 ? 0.88 : 0.92);
        double x1 = radius_ * 0.98;
        
        double[] geometry = new double[] {x0, 0, x1, 0};
        Matrix4x4 m = new Matrix4x4();
        m.rotateZ (2.0 * Math.PI * i / 60.0);
        m.translate (x0_, y0_, 0.0);
        m.transformXyPoints (geometry);
        ticks_[i].setGeometryXy (geometry);
      }

      for (int i = 0; i < 12; i++) {
        double[] geometry = new double[] {radius_ * 0.75, 0};        

        Matrix4x4 m = new Matrix4x4();
        m.rotateZ (2.0 * Math.PI * i / 12.0);
        m.translate (x0_, y0_, 0.0);
        m.transformXyPoints (geometry);

        labels_[i].setGeometryXy (geometry);
      }

      brand_.setGeometry (x0_, y0_ - radius_ * 0.3);
      
      update();
    }
  }
 
  private class Ticker extends TimerTask
  {
    private GClock clock_;
    
    public Ticker (GClock clock)
    {
      clock_ = clock;
    }
    
    public void run()
    {
      clock_.update();
      clock_.refresh();
    }
  }

  public static void main (String[] args)
  {
    new Demo23();
  }
</pre><p>The post <a href="https://studentprojects.in/software-development/java/java-programs/advanced/java-program-to-display-a-clock/">Java program to display a clock</a> first appeared on <a href="https://studentprojects.in">Student Projects</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://studentprojects.in/software-development/java/java-programs/advanced/java-program-to-display-a-clock/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
