Cómo usar el programa shapemaker en Java
El programa ShapeMaker se basa en una técnica muy útil para cualquier programa Java que funciona con más de unas pocas formas. En lugar de crear y dibujar cada forma por separado en el pintar método, el programa almacena las formas en una Lista de arreglo objeto de tipo Forma. Las formas se crean en el PaintComponent constructor, por lo que el código que crea las formas se ejecuta sólo una vez.
Luego, en el pintar método, una mejorada para bucle se utiliza para dibujar cada forma en el Lista de arreglo. Esta técnica es especialmente útil para los programas que permiten al usuario dibujar formas. Cada vez que el usuario dibuja una nueva forma, que acaba de agregar la forma a la Lista de arreglo. Entonces, cada vez que el pintar método se llama, todas las formas se dibujan.
javax.swing import * -. java.awt.event import * -. import java.awt. * - java.awt.geom import * - import java.util. * -. public class ShapeMaker extiende JFrame {public static void main ( String [] args) {nueva ShapeMaker () -} ShapeMaker público () {this.setSize (300, 300) -this.setTitle ("Shape Maker") - this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) -this.add (nueva PaintSurface (), BorderLayout.CENTER) -this.setVisible (true) -} PaintSurface clase privada se extiende JComponent {ArrayListformas = new ArrayList () -Punto StartDrag, endDrag-Shape encontrado = nulo pública PaintSurface () {Shape s - // unos rectángulos = new Rectangle2D.Float (10, 10, 60, 80) -shapes.add (s) - // un rectángulos redondeados = new RoundRectangle2D.Float (110, 10, 80, 80,10, 10) -shapes.add (s) - // a rectángulos redondeados = new RoundRectangle2D.Float (210, 10, 60, 80, 50, 75 ) -shapes.add (s) - // unos círculos = new Ellipse2D.Float (10, 110, 80, 80) -shapes.add (s) - // un elipses = new Ellipse2D.Float (110, 110, 80 , 40) -shapes.add (s) - // otros elipses = new Ellipse2D.Float (210, 110, 40, 80) -shapes.add (s) - // un arcos = new Arc2D.Float (10, 210 , 80, 80, 90, 90, Arc2D.OPEN) -shapes.add (s) - // otros arcos = nueva Arc2D.Float (110, 210, 80, 80, 0, 180, Arc2D.CHORD) -shapes. añadir (s) - // otros arcos = nueva Arc2D.Float (210, 210, 80, 80, 45, 90, Arc2D.PIE) -shapes.add (s) -} (Graphics g) {public void pintura Graphics2D g2 = (Graphics2D) g - // activar antialiasingg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON)-// dibujar fondo gridg2.setPaint (Color.LIGHT_GRAY) -para (int i = 0- i lt; getSize () anchura- i + = 10) g2.draw (Line2D.Float nueva (i, 0, i, getSize () de altura.)) -. for (int i = 0- i lt; . getSize () en altura i + = 10) g2.draw (nueva Line2D.Float (0, i, getSize () de ancho, i.)) - // dibujar todas las formas de la matriz listg2.setColor (Color.BLACK ) -g2.setStroke (nueva BasicStroke (2)) - de (s Forma: formas) g2.draw (s) -}}}