Die Klasse Uhr:

package test.informatik10.uhr;
 
import sge.*;
/**
 * Die Klasse Uhr stellt eine Bahnhofsuhr dar
 *
 * @author Martin Pabst
 * @version 16.08.2017
 */
public class Uhr implements TimerListener
{
    private double mitteX = 300;
    private double mitteY = 300;
    private double radius = 250;
 
    private Sekundenzeiger sekundenzeiger;
    private Linie minutenzeiger;
    private Linie stundenzeiger;
 
    /**
     * Konstruktor für Objekte der Klasse Uhr
     */
    public Uhr()
    {
 
        Fenster fenster = new Fenster();
        fenster.setHintergrundfarbe("weiß");
 
        ticksZeichnen(); // kleine Striche außen am Zifferblatt
        zeigerZeichnen();
 
        Timer timer = new sge.Timer(this, 1000);
        timer.start();
 
    }
 
    public void timerSignalVerarbeiten(){
 
        sekundenschritt();
 
    }
 
    private void sekundenschritt(){
 
        sekundenzeiger.drehenUm(mitteX, mitteY, 6);
        minutenzeiger.drehenUm(mitteX, mitteY, 0.1);
        stundenzeiger.drehenUm(mitteX, mitteY, 0.1/12);
 
    }
 
    private void zeigerZeichnen()
    {
        stundenzeiger = new Linie(mitteX, mitteY + 0.2* radius, mitteX, mitteY - radius*4/5);
        stundenzeiger.setRandstaerke(12);
 
        minutenzeiger = new Linie(mitteX, mitteY + 0.2 * radius, mitteX, mitteY - radius*11/12);
        minutenzeiger.setRandstaerke(8);
 
        sekundenzeiger = new Sekundenzeiger(mitteX, mitteY, radius);
    }
 
    private void ticksZeichnen(){
 
        Rechteck tick;
 
        for(int i = 0; i < 60; i++){
            // Erzeugen eines neuen Rechtecks auf der 12 Uhr-Position:
            if(i % 5 == 0){
                tick = new Rechteck(mitteX - 5, mitteY - radius, 10, radius * 1/7);
            } else {
                tick = new Rechteck(mitteX - 3, mitteY - radius, 6, radius * 1/21);
            }
 
            tick.drehenUm(mitteX, mitteY, i*6);
            tick.setFuellfarbe("schwarz");
 
        }
    }
 
//    public void ziffernZeichnen(){
//        for(int i = 0; i < 12; i++){
//            float winkel = 30*i;
//            Textfeld t = new Textfeld(mitteX, mitteY - radius - 30, "" + i%12);
//            t.setAusrichtungX(Ausrichtung.zentriert);
//            t.setAusrichtungY(Ausrichtung.zentriert);
//            t.drehenUm(mitteX, mitteY, winkel);
//        }
//    }
 
}

Die Klasse Sekundenzeiger

package test.informatik10.uhr;
 
import sge.Dreieck;
import sge.Kreis;
 
public class Sekundenzeiger {
 
    private Kreis kreisMitte;
    private Kreis kreisAussenRot;
    private Kreis kreisAussenWeiss;
    private Dreieck dreieck;
 
    public Sekundenzeiger(double mitteX, double mitteY, double radius){
 
        kreisMitte = new Kreis(mitteX, mitteY, radius/20);
        kreisMitte.setFuellfarbe("rot");
 
        double mitteYAussen = mitteY - radius * 0.6;
 
        kreisAussenRot = new Kreis(mitteX, mitteYAussen, radius/10);
        kreisAussenRot.setFuellfarbe("rot");
 
        dreieck = new Dreieck(mitteX, mitteY - radius, radius/20, radius*6/5);
        dreieck.setFuellfarbe("rot");
 
        kreisAussenWeiss = new Kreis(mitteX, mitteYAussen, radius/20);
        kreisAussenWeiss.setFuellfarbe("weiß");
 
    }
 
    public void drehenUm(double mitteX, double mitteY, double winkel){
        kreisMitte.drehenUm(mitteX, mitteY, winkel);
        kreisAussenWeiss.drehenUm(mitteX, mitteY, winkel);
        kreisAussenRot.drehenUm(mitteX, mitteY, winkel);
        dreieck.drehenUm(mitteX, mitteY, winkel);
    }
 
 
}
Drucken/exportieren
QR-Code
QR-Code schule:klassen:2017:10b:kap6:komplett (erstellt für aktuelle Seite)