• Anasayfa
  • Sık Kullanılanlara Ekle
  • Ana Sayfam Yap
  • e-Posta
Geniş Ekran Modu Otomatik Ekran Boyutu Font Boyutunu Azalt Font Boyutunu Azalt Font Boyutunu Normal Yap Yazdır

Java'da Analog Saat Örneği

AWT kütüphanesi kullanılarak yapılan Java'da analog bir saat örneği anlatılıyor

Java Application Örnekleri

Java'da Analog Saat ÖrneğiJava'da Analog Saat Örneği

Bu yazıda Java'da akrep ve yelkovanı olan analog bir saat örneği anlatılıyor. Bir zamanlayıcı (Thread) sayesinde görüntü her saniye (1000 milisaniyede bir) değiştiriliyor. Önrekte Graphics ve Math sınıflarına ait baız yöntemler kullanılıyor. Zamanı almak için Calendar nesnesinden yararlanıyor.

Zamanlayıcı (Timer)

Bir zamanlayıcı (Timer) nesnesine zamanlayıcı görevi (TimerTask) sadece tuvali (canvas'ı) tekrar çizecek şekilde veriliyor. 

  Timer timer=new Timer();
  TimerTask task=new TimerTask(){
    public void run() {
      repaint(); 
    }
  };
  timer.scheduleAtFixedRate(task,0,1000);

Burada zamanlayıcının scheduleAtFixedRate() yöntemi işlemin 1000 milisaniye arayla yapılmasını sağlıyor.

Takvim (Calendar)

Java'da zamanı (saati ve tarihi) almak için Calendar komutu kullanılır. Şu andaki zamanı almak için

  Calendar now=Calendar.getInstance();

şeklinde bir kod yazılır. Calendar sınıfı programın koştuğu yerelliğe göre çalışır. Batı takvimi Gregorian takvimi olduğu için aslında bu yöntemle gelen örnek bu takvimi kullanan ülkeler için GregorianCalendar'dır. Calendar sınıfında get() yöntemi ile zamana ait yıl, ay, gün, saat, dakika ve saniye gibi bilgiler alınır. Örneğin dakikayı almak için

    int minute=now.get(Calendar.MINUTE);

şeklinde bir kod yazılır.

 Math Sınıfı

Java'da temel matematiksel işlemleri yapmak için Math sınıfı bulunur. Burada, bu sınıfa ait sin(), cos() gibi trigonometrik fonksiyonlara ilişkin yöntemler kullanılmıştır. Ayrıca derece cinsinden verilmiş bir açıyı radyan birimine çevirmek için toRadians() yöntemi kullılmaktadır.

Graphics Sınıfı

AWT'de çizim yapmak için Graphics sınııfı (veya onu genişletende Graphics2D) sınıfı kullanılır. Burada yuvarlak çizmek için drawOval(), çizgi çizmek için drawLine() ve yazı 'çizmek' içinde drawString() yöntemleri kullanılmıştır.

Önreğin tamamı :

package com.godoro.samples.awt;

import java.awt.*;
import java.util.*;

public class ClockCanvas extends Canvas{

  private final static int SLICE_DEGREE=6;
  private Point center=new Point(100,100);
  private int radius=80;

  public ClockCanvas(){
    Timer timer=new Timer();
    TimerTask task=new TimerTask(){
	public void run() {
	    repaint();
	}
    };4
    timer.scheduleAtFixedRate(task,0,1000);
  }
  public void paint(Graphics g){
      Calendar now=Calendar.getInstance();
      drawDial(g);
      drawSecondHand(g,now);
      drawMinuteHand(g,now);
      drawHourHand(g,now);
  }
  private void drawDial(Graphics g) {
    g.drawOval(center.x-radius,center.y-radius,2*radius,2*radius);
    int numbersRadius=radius-8;
    for(int i=1;i<=12;i++){
	double hour=Math.PI/6;
	int x=(int)(center.x-5+(numbersRadius)*Math.sin(i*hour));
	int y=(int)(center.x+5-(numbersRadius)*Math.cos(i*hour));	         
	g.drawString(Integer.toString(i),x,y);
    }
  }

  private void drawSecondHand(Graphics g,Calendar now) {
    int second = now.get(Calendar.SECOND);	
    double radian=Math.toRadians(SLICE_DEGREE*second);
    int x=(int)(center.x+(radius-5)*Math.sin(radian));
    int y=(int)(center.y-(radius-5)*Math.cos(radian));
    g.drawLine(center.x,center.y,x,y);
  }

  private void drawMinuteHand(Graphics g,Calendar now) {
    int minute=now.get(Calendar.MINUTE);
    double radian=Math.toRadians(SLICE_DEGREE*minute);	
    int x=(int)(center.x+(radius-10)*Math.sin(radian));
    int y=(int)(center.y-(radius-10)*Math.cos(radian));	
    g.drawLine(center.x,center.y,x,y);
  }
  private void drawHourHand(Graphics g,Calendar now) {
    int hour = now.get(Calendar.HOUR);      
    int minute=now.get(Calendar.MINUTE);
    double radian=Math.toRadians(30*hour+minute/2);		
    int x=(int)(center.x+(radius-25)*Math.sin(radian));
    int y=(int)(center.y-(radius-25)*Math.cos(radian));
    g.drawLine(center.x,center.y,x,y);
  }

  public static void main(String[] args) {
    Frame frame=new Frame();
    frame.setTitle("Clock Canvas");    
    frame.setLayout(new BorderLayout());
    frame.add(BorderLayout.CENTER,new ClockCanvas());
    frame.setBounds(0,0,220,220);
    frame.setVisible(true);
  }
}

 

Kaynak www.godoro.com/Portal/Content/Article/ArticleViewPage.aspx


Bu içerikle ilgili henüz herhangi bir yorum yapılmamıştır. Bu içerikle ilgili Yorumunuzu eklemek için burayı tıklayınız.
Yorumunuz
İsminiz
Emailiniz
Resiminiz (En Fazla 2MB)
Güvenlik Metni

Java Application Örnekleri

Java Ile Paralel Devrede Akım Ve Voltaj Hesabı Pro...
Java Ile Paralel Devrede Akım Ve Voltaj Hesabı Pro...
Dönem Ödevi
Java'da Animasyon Örneği
Java'da Animasyon Örneği
Java'da bir grup resmin artarda hızla gösterilmesi esasına dayanarak canlandırma yapan bir örnek. Re...
Java'da Görüntü Haraketleri
Java'da Görüntü Haraketleri
Java'da resim nesnelerinin nasıl haraket ettirildiğine dair bir örnek. Zamanlayıcı kullanımı ve klav...
Applet + Java Nesnesi
Applet + Java Nesnesi
Applet içerisinde Java Nesnesinin kullanımı
Mysql'e Bağlanmak
Mysql'e Bağlanmak
İngilizce bir makale
2 Boyutlu Dönen Kare
2 Boyutlu Dönen Kare
Applet Uygulaması
Masaüstü Takvim Uygulaması
Masaüstü Takvim Uygulaması
İnglizce bir makaledir.
Sayı Tahmin Oyunu
Sayı Tahmin Oyunu
NetBeans Kullanılarak yapılmış, Tarayıcı üzerinden çalışan Applet örneği
    Web içeriği Web İçeriği
    A J A X
    Açık Kaynak İşletim Sistemleri
    Algoritma
    Apache Web Sunucusu
    Asp
    Asp.net
    Bilgisayar Donanım
    Bilgisayara Giriş
    Bilgisayara Giriş Uygulamaları
    Bilim
    Cgı Nedir?
    Cpp
    Css
    Css Ugulama Örnekleri
    Dreamweaver
    Dreamweaver Uygulamaları
    Elektronik Posta (email)
    Firefox
    Fireworks
    Fireworks Uygulaması
    Flash Actionscript
    Flash Dersleri
    Flash Örnek Uygulamalar
    Google Docs
    Google Teknolojileri
    Html Dersleri
    Internet Mantığı
    Java Applet Örnekleri
    Java Applet Temelleri
    Java Application Örnekleri
    Java Netbeans Ide
    Java Temel Örnekler
    Java Temelleri
    Javascript
    Javascript Uygulama
    Jquery
    Jquery Örnekleri
    Linux Bash Script
    Linux OS
    Linux Server
    Linux Web Filter
    Ms Excel Dersleri
    Ms Excel Uygulamaları
    Ms Word Dersleri
    Ms Word Uygulamaları
    Mysql Veri Tabanı
    Network
    Ödev Konuları
    Pascal
    Photoshop Dersleri
    Photoshop Uygulamaları
    Php Dersleri
    Php Uygulamaları
    Phpmyadmin
    Postgresql Veri Tabanı
    Power Point
    Qbasic
    Regular Expressions
    Seo
    Teknik Servis
    Veri Tabanı
    Windows Server
    X M L
    Yazılım Dünyası
    Video içeriği
    Photoshop Uygulama Örnekleri

    Ara Notlar

    Uygulamarda aldığınız notları buradan görebilirsiniz.

    Anket

    İçeriklerimiz hakkında yaptığımız ankete buradan katılın.

    İlgili Web Siteleri

    Çeşitli konularda hazırlanmış link içeriklerine buradan bakabilirsiniz.


    Ödev Gönder | İncelenmeyi Bekleyen Ödevler | Uygulama Resimleri | Uygulama Resmi Gönder | İnternet Üzerinden Sınav | Test Sorusu Gönder | Sınıf Karneleri | Anketler | Linkler
    www.dijitalders.com

    bilgidijitalders.com
    Bu sayfalar en iyi 1024 x 768 ekran çözünürlüğünde görüntülenir.
    Site içerikleri, site kullanıcıları tarafından yollanan içeriklerdir. Her hangi bir içeriğin lisanslı yahut şahsınıza ait olduğunu tarafımıza iletirseniz gerekli düzenlemeyi yapacağız. Kullanılan içerikler, siteyi kullanan öğrenciler ve araştırmacılar için kolaylık sağlamak amacıyla oluşturulmuştur.
    Sayfada HATA! Olduğunu Düşünüyorsanız | Sık Kullanılanlara Ekle | www.dijitalders.com'u Ana Sayfam Yap | Web Tasarımcıya e-Posta
    Bu site 877,481 kişi tarafından ziyaret edilmiştir.