Курсовая работа: Простейшие часы на Java
throws IncorrectParametersException {
//проверяем
диаметр
if(diam <= 0)
throw new IncorrectParametersException();
this.diam = diam;
this.dialColor = dialColor;
this.hairLineColor = hairLineColor;
//создаем
рисунок
dial = new BufferedImage((int)diam, (int)diam,
BufferedImage.TYPE_INT_ARGB);
//создаем
черточку
на
циферблате
Rectangle2D.Double r = new
Rectangle2D.Double(-diam/40, -diam/60, diam/20, diam/30);
AffineTransform at = new AffineTransform();
//смещаем
начало
координат
в
центр
циферблата
at.translate(diam/2,
diam/2);
//сохраняем
текущее преобразование
AffineTransform prev = (AffineTransform)at.clone();
//получаем
графический
контекст
Graphics2D g2 = dial.createGraphics();
//закрашиваем
все заданным цветом
g2.setBackground(dialColor);
g2.clearRect(0, 0, (int)diam, (int)diam);
//устанавливаем
цвет
черточек
g2.setColor(hairLineColor);
//рисуем
12 штрихов
for(int i = 0; i < 12; i++)
{
//смещаем
центр координат к краю циферблата (туда,
//где
должен быть расположен штрих)
at.translate(-(diam/2 - r.width), 0);
//поворачиваем
штрих
относительно
центра
циферблата
at.rotate(Math.toRadians(30*i), diam/2 - r.width,
0);
//устанавливаем
текущее преобразование
g2.setTransform(at);
//рисуем
штрих
g2.fill(r);
//восстанавливаем
начальное преобразование
at.setTransform(prev);
}
}
/**
*
Возвращает изображение циферблата.
*
*
@return BufferedImage рисунок, содержащий изображение циферблата
*/
public BufferedImage getClockDial() {
return dial;
}
}
// реализация
класса
IncorrectParametersException
package clock;
/*
* IncorrectParameters.java
*
* Created on май
2009 г.
* */
/**
*
* @author Бочкарева
Мария
*/
public class IncorrectParametersException extends
java.lang.Exception {
/**
*
*/
private static final long serialVersionUID
= 1L;
/**
* Creates a new instance of
<code>IncorrectParameters</code> without detail message.
*/
public IncorrectParametersException() {
this("IncorrectParameters");
}
/**
* Constructs an instance of
<code>IncorrectParameters</code> with the specified detail message.
* @param msg the detail message.
*/
public IncorrectParametersException(String msg) {
super(msg);
}
}
// реализация
класса
Needle
package clock;
/*
* Needle.java
*
* Created on май
2009 г.
*/
import java.awt.*;
import java.awt.geom.*;
/**
*
Этот класс предназначен для создания стрелки часов
*
* @author Бочкарева
Мария
*/
public class Needle {
private GeneralPath shape;
private double length, width;
/**
Создает экземпляры класса <code>Needle</code>.
*
При создании необходимо указать длину и ширину стрелки.
*
Длина должна быть больше ширины.
*
*
@param length длина стрелки
*
@param width длина стрелки
*
*
@exception IncorrectParametersException - если длина меньше или
*
равна нулю, если ширина меньше или равна нулю, если длина
* меньше
или
равна
ширине.
*/
public Needle(double length, double width)
throws IncorrectParametersException
/**
*
Возвращает стрелку в виде объекта типа <code>Shape</code>.
*
@return Shape - фигура, содержащая изображение стрелки
*/
public Shape getNeedle() {
return shape;
}
/**
*
Возвращает центр вращения стрелки (точку, вокруг которой
*
стрелка будет вращаться)
*
@return Point2D.Double - точка, содержащая координаты центра вращения
* стрелки
*/
public Point2D.Double getRotationCenter() {
Point2D.Double rc = new Point2D.Double();
rc.x = rc.y = width/2;
return rc;
}
}
|