- Applets : Verschiedenes : Analoguhr -
Eine Analoguhr als Java-Applet.
AnalogUhr.java
import java.awt.*;
import java.applet.*;
import java.util.*;
public class AnalogUhr extends Applet {
public void init() {
setBackground(new Color(255,255,255));
}
Image buffer;
Graphics2D gBuffer;
Calendar date;
int nn=125, r=100; // Zentrum und Radius
public void paint(Graphics g) {
// Double-Buffering
if (buffer==null) {
buffer=createImage(this.getSize().width, this.getSize().height);
gBuffer=(Graphics2D)buffer.getGraphics();
}
gBuffer.clearRect(0,0,this.getSize().width, this.getSize().height);
// Antialiasing
gBuffer.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
gBuffer.setColor(new Color(0,0,0));
gBuffer.drawOval(nn-2,nn-2,4,4);
// Striche bei 3, 6, 9 und 12 Uhr
for (int i=0;i<4;i++) {
gBuffer.drawLine(
nn+(int)((r-7)*Math.cos(Math.toRadians(90*i))),
nn+(int)((r-7)*Math.sin(Math.toRadians(90*i))),
nn+(int)(r*Math.cos(Math.toRadians(90*i))),
nn+(int)(r*Math.sin(Math.toRadians(90*i))));
}
// Striche bei jeder Stunde
for (int i=0;i<12;i++) {
gBuffer.drawLine(
nn+(int)((r-5)*Math.cos(Math.toRadians(30*i))),
nn+(int)((r-5)*Math.sin(Math.toRadians(30*i))),
nn+(int)(r*Math.cos(Math.toRadians(30*i))),
nn+(int)(r*Math.sin(Math.toRadians(30*i))));
}
// Striche bei jeder Minute (optional)
for (int i=0;i<60;i++) {
gBuffer.drawLine(
nn+(int)((r-2)*Math.cos(Math.toRadians(6*i))),
nn+(int)((r-2)*Math.sin(Math.toRadians(6*i))),
nn+(int)(r*Math.cos(Math.toRadians(6*i))),
nn+(int)(r*Math.sin(Math.toRadians(6*i))));
}
date = new GregorianCalendar();
int hours = date.get(Calendar.HOUR_OF_DAY);
int minutes = date.get(Calendar.MINUTE);
int seconds = date.get(Calendar.SECOND);
// Stunden
gBuffer.drawLine(
nn,nn,nn+(int)(60*Math.cos(Math.toRadians(hours%12*30+minutes/2.0-90))),
nn+(int)(60*Math.sin(Math.toRadians(hours%12*30+minutes/2.0-90))));
// Minuten
gBuffer.drawLine(
nn,nn,nn+(int)(85*Math.cos(Math.toRadians(minutes*6-90))),
nn+(int)(85*Math.sin(Math.toRadians(minutes*6-90))));
// Sekunden
gBuffer.setColor(new Color(170,170,170));
gBuffer.drawLine(
nn,nn,nn+(int)(90*Math.cos(Math.toRadians(seconds*6-90))),
nn+(int)(90*Math.sin(Math.toRadians(seconds*6-90))));
g.drawImage (buffer, 0, 0, this);
// Verzögerung
try {Thread.sleep(50);}
catch (InterruptedException e) {}
repaint();
}
public void update(Graphics g) {paint(g);}
}
Download AnalogUhr.zip (ca. 3 kb)
© 2001-2004 Albert Kluge - Alle Rechte vorbehalten
Impressum | Datenschutz | Nutzung | eMail
|