********************** BetterCircleTest.java ********************** import java.awt.*; import java.applet.Applet; /** Position circles down the diagonal so that their borders * just touch. Illustrates that Java 1.1 lightweight * components can be partially transparent. * */ public class BetterCircleTest extends Applet { public void init() { setBackground(Color.lightGray); setLayout(null); BetterCircle circle; int radius = getSize().width/6; int deltaX = round(2.0 * (double)radius / Math.sqrt(2.0)); for (int x=radius; x<6*radius; x=x+deltaX) { circle = new BetterCircle(Color.black, radius); add(circle); circle.setCenter(x, x); } } private int round(double num) { return((int)Math.round(num)); } } ******************************** BetterCircle.java ******************************** import java.awt.*; /** An improved variation of the Circle class that uses Java 1.1 * lightweight components instead of Canvas. * */ public class BetterCircle extends Component { private Dimension preferredDimension; private int width, height; public BetterCircle(Color foreground, int radius) { setForeground(foreground); width = 2*radius; height = 2*radius; preferredDimension = new Dimension(width, height); setSize(preferredDimension); } public void paint(Graphics g) { g.setColor(getForeground()); g.fillOval(0, 0, width, height); } public void setCenter(int x, int y) { setLocation(x - width/2, y - height/2); } /** Report the original size as the preferred size. * That way, the BetterCircle doesn't get * shrunk by layout managers. */ public Dimension getPreferredSize() { return(preferredDimension); } /** Report same thing for minimum size as * preferred size. */ public Dimension getMinimumSize() { return(preferredDimension); } } *******************************
BetterCircleTest.java
Permanent link to this article: http://bangla.sitestree.com/bettercircletest-java/