Java Application Örnekleri : Java`da Analog Saat

advertisement
Java'da Analog Saat Örneği
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'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ı :
www.dijitalders.com
Java'da Analog Saat Örneği
1
Java'da Analog Saat Örneği
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);
}
www.dijitalders.com
Java'da Analog Saat Örneği
2
Java'da Analog Saat Örneği
}
Kaynak www.godoro.com/Portal/Content/Article/ArticleViewPage.aspx
www.dijitalders.com
Java'da Analog Saat Örneği
3
Download