KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jgoodies > animation > components > CircleComponent


1 /*
2  * Copyright (c) 2001-2004 JGoodies Karsten Lentzsch. All Rights Reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * o Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  *
10  * o Redistributions in binary form must reproduce the above copyright notice,
11  * this list of conditions and the following disclaimer in the documentation
12  * and/or other materials provided with the distribution.
13  *
14  * o Neither the name of JGoodies Karsten Lentzsch nor the names of
15  * its contributors may be used to endorse or promote products derived
16  * from this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
20  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
22  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
27  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
28  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  */

30
31 package com.jgoodies.animation.components;
32
33 import java.awt.*;
34
35 import javax.swing.JComponent JavaDoc;
36
37 /**
38  * A Swing component that paints a circle with a given center, radius and color.
39  *
40  * @author Karsten Lentzsch
41  * @version $Revision: 1.3 $
42  */

43 public final class CircleComponent extends JComponent JavaDoc {
44
45     private Point center;
46     private int radius;
47     private Color color;
48
49     /**
50      * Constructs a <code>CircleComponent</code>.
51      */

52     public CircleComponent() {
53         center = new Point(0, 0);
54         radius = 30;
55         color = Color.black;
56     }
57
58     public void setCenter(Point p) {
59         this.center = p;
60     }
61     
62     public void setRadius(int radius) {
63         this.radius = radius;
64     }
65     
66     public void setColor(Color color) {
67         this.color = color;
68     }
69
70     /**
71      * Sets the bounds and center point.
72      *
73      * @param x the horizontal origin
74      * @param y the vertical origin
75      * @param w the width, the horizontal extent
76      * @param h the height, the vertical extent
77      */

78     public void setBounds(int x, int y, int w, int h) {
79         super.setBounds(x, y, w, h);
80         setCenter(new Point(x + w / 2, y + h / 2));
81     }
82
83     /**
84      * Paints the component: enables anti-aliasing and sets high quality hints,
85      * then renderers the component via the underlying renderer.
86      *
87      * @param g the Graphics object to render on
88      */

89     public void paintComponent(Graphics g) {
90         Graphics2D g2 = (Graphics2D) g;
91
92         int diameter = radius * 2;
93         g2.setRenderingHint(
94             RenderingHints.KEY_ANTIALIASING,
95             RenderingHints.VALUE_ANTIALIAS_ON);
96         g.setColor(color);
97         g2.setStroke(new BasicStroke(4));
98         g2.drawOval(center.x - radius, center.y - radius, diameter, diameter);
99     }
100
101 }
Popular Tags