package TextTest; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Point2D; import javax.swing.JPanel; public class ClockPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private double minutes = 0; private int RADIUS = 100; private double MINUTE_HAND_LENGTH = 0.8*RADIUS; private double HOUR_HAND_LENGHT = 0.6*RADIUS; public ClockPanel() { setPreferredSize(new Dimension(2*RADIUS+1 , 2*RADIUS+1)); } public void paintComponent(Graphics g) { //desenarea marginii in forma de cerc super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; Ellipse2D circle = new Ellipse2D.Double(0, 0, 2*RADIUS, 2*RADIUS); g2.draw(circle); //desenarea sagetii a orei double hourAngle = Math.toRadians(90-360 * minutes / (12*60)); drawHand(g2,hourAngle,HOUR_HAND_LENGHT); //desenarea sageteii a minutelor double minuteAngle = Math.toRadians(90-360 * minutes/60); drawHand(g2,minuteAngle,MINUTE_HAND_LENGTH); } public void drawHand(Graphics2D g2, double angle,double handLenght) { Point2D end = new Point2D.Double(RADIUS+handLenght*Math.cos(angle), RADIUS-handLenght*Math.sin(angle)); Point2D center = new Point2D.Double(RADIUS,RADIUS); g2.draw(new Line2D.Double(center,end)); } /** * Adaugarea timpului. * @param h ora * @param m minute */ public void setTime(int h,int m) { minutes = h*60+m; repaint(); } }