Como utilizar o Programa ShapeMaker em Java
O programa ShapeMaker depende de uma técnica muito útil para qualquer programa Java que trabalha com mais de algumas formas. Em vez de criar e puxando cada forma separadamente no pintura método, o programa guarda os formatos em um ArrayList objeto do tipo Forma. As formas são criadas na paintComponent construtor, então o código que cria as formas é executado apenas uma vez.
Em seguida, no pintura método, uma melhorada para loop é usado para desenhar cada forma no ArrayList. Esta técnica é especialmente útil para programas que permitem ao usuário desenhar formas. Cada vez que o usuário desenha uma nova forma, você acabou de adicionar a forma para a ArrayList. Então, sempre que o pintura método é chamado, todas as formas são desenhados.
import javax.swing. * - import java.awt.event. * - import java.awt. * - java.awt.geom importação. * - import java.util. * - classe pública ShapeMaker estende JFrame {public static void main ( String [] args) {new ShapeMaker () -} ShapeMaker pública () {this.setSize (300, 300) -this.setTitle ( "Shape Maker") - this.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE) -this.add (nova PaintSurface (), BorderLayout.CENTER) -this.setVisible (true) -} PaintSurface classe privada estende JComponent {ArrayListformas = new ArrayList () -Point StartDrag, endDrag-Shape encontrado = null-pública PaintSurface () {Forma s - // um retângulos = new Rectangle2D.Float (10, 10, 60, 80) -shapes.add (s) - // a rectângulos arredondados = novo RoundRectangle2D.Float (110, 10, 80, 80,10, 10) -shapes.add (s) - // a nova rectângulos arredondados = RoundRectangle2D.Float (210, 10, 60, 80, 50, 75 ) -shapes.add (s) - // a círculos = new Ellipse2D.Float (10, 110, 80, 80) -shapes.add (s) - // reticências = new Ellipse2D.Float (110, 110, 80 , 40) -shapes.add (s) - // mais elipses = new Ellipse2D.Float (210, 110, 40, 80) -shapes.add (s) - // uma arcos = new Arc2D.Float (10, 210 , 80, 80, 90, 90, Arc2D.OPEN) -shapes.add (s) - // outros arcos = new Arc2D.Float (110, 210, 80, 80, 0, 180, Arc2D.CHORD) -shapes. adicionar (s) - // outros arcos = new Arc2D.Float (210, 210, 80, 80, 45, 90, Arc2D.PIE) -shapes.add (s) -} public void paint (Graphics g) {Graphics2D g2 = (Graphics2D) g - // ativar antialiasingg2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON)-// desenhar gridg2.setPaint fundo (Color.LIGHT_GRAY) -para (int i = 0- i lt; getSize () width- i + = 10) g2.draw (nova Line2D.Float (i, 0, i, getSize () de altura.)) -. for (int i = 0- i lt; . GetSize () em altura i + = 10) g2.draw (nova Line2D.Float (0, i, getSize () largura, i.)) - // Tirar todas as formas na matriz listg2.setColor (Color.BLACK ) -g2.setStroke (nova BasicStroke (2)) - para (Forma s: formas) g2.draw (s) -}}}