Sei sulla pagina 1di 17

Unidad 12.

Grficos y Java 2D
12.1 Introduccin
El sistema de coordenadas de Java es un esquema para identificar todos los posibles puntos en la pantalla. Un par de coordenadas est compuesto de una coordenada x (la coordenada horizontal) y una coordenada y (la coordenada vertical). Para mostrar texto y figuras en la pantalla, se especifican sus coordenadas. Estas coordenadas se utilizan para indicar en dnde deben mostrarse los grficos en una pantalla. Las unidades de las coordenadas se miden en pxeles. Un pxel es la unidad ms pequea de resolucin de un monitor de computadora.

12.2 Contextos y objetos de grficos


Un contexto de grficos en Java permite dibujar en la pantalla. La clase Graphics contiene mtodos para dibujar cadenas, lneas, rectngulos y otras figuras. Tambin se incluyen mtodos para manipular tipos de letra y colores. Un objeto Graphics administra un contexto de grficos y dibuja pxeles en la pantalla, los cuales representan a otros objetos grficos (por ejemplo, lneas, elipses, rectngulos y otros polgonos. La clase Graphics es una clase abstract. Esto contribuye a la portabilidad de Java; cuando se implementa Java en una plataforma, se crea una subclase de Graphics, la cual implementa las herramientas de dibujo. Esta implementacin se oculta de nosotros mediante la clase Graphics, la cual proporciona la interfaz que nos permite utilizar los grficos en forma independiente de la plataforma. La clase JComponent contiene un mtodo paintComponent que puede usarse para dibujar los grficos en un componente de Swing. El mtodo paintComponent recibe como argumento un objeto Graphics que el sistema pasa al mtodo paintComponent cuando un componente ligero de Swing necesita volver a pintarse. Pocas veces es necesario que el programador llame al mtodo paintComponent directamente, ya que el dibujo de grficos es un proceso controlado por eventos. Cuando se ejecuta una aplicacin, el contenedor de sta llama al mtodo paintComponent. Para que paintComponent se llame otra vez, debe ocurrir un evento. Cuando se muestra un objeto JComponent, se hace una llamada a su mtodo paintComponent. Los programadores llaman al mtodo repaint para actualizar los grficos que se dibujan en el componente de Swing.

12.3 Control de colores


La clase Color declara mtodos y constantes para manipular los colores en un programa. Todo color se crea a partir de un componente rojo, uno verde y uno azul. En conjunto estos componentes se llaman valores RGB. Los componentes RGB especifican la cantidad de rojo, verde y azul en un color respectivamente. Entre mayor sea el valor RGB, mayor ser la cantidad de ese color especfico. Los mtodos getRed, getGreen y getBlue de Color devuelven valores enteros de 0 a 255, los cuales representan la cantidad de rojo, verde y azul, respectivamente. El mtodo getColor de Graphics devuelve un objeto Color que representa el color actual para dibujar. El mtodo setColor de graphics establece el color actual para dibujar.

El mtodo fillRect de Graphics dibuja un rectngulo relleno por el color actual del objeto Graphics. El mtodo drawString de Graphics dibuja un objeto String en el color actual. El componente de GUI JColorChooser permite a los usuarios de una aplicacin seleccionar colores. La clase JColorChooser proporciona el mtodo de conveniencia static llamado showDialog, que crea un objeto JColorChooser, lo adjunta a un cuadro de dilogo y muestra ese cuadro de dilogo. Mientras el cuadro de dilogo de seleccin de color est en la pantalla, el usuario no podr interactuar con el componente padre. A este tipo de cuadro de dilogo se le llama cuadro de dilogo modal.

// Fig. 12.5: JPanelColor.java Demostracin de objetos Color. import java.awt.Graphics; import java.awt.Color; import javax.swing.JPanel; public class JPanelColor extends JPanel { // dibuja rectngulos y objetos String en distintos colores public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama el mtodo paintComponent de la superclase this.setBackground( Color.WHITE ); // establece nuevo color de dibujo, usando valores enteros g.setColor( new Color( 255, 0, 0 ) ); g.fillRect( 15, 25, 100, 20 ); g.drawString( "RGB actual: " + g.getColor(), 130, 40 ); // establece nuevo color de dibujo, usando valores de punto flotante g.setColor( new Color( 0.50f, 0.75f, 0.0f ) ); g.fillRect( 15, 50, 100, 20 ); g.drawString( "RGB actual: " + g.getColor(), 130, 65 ); // establece nuevo color de dibujo, usando objetos Color static g.setColor( Color.BLUE ); g.fillRect( 15, 75, 100, 20 ); g.drawString( "RGB actual: " + g.getColor(), 130, 90 ); // muestra los valores RGB individuales Color color = Color.MAGENTA; g.setColor( color ); g.fillRect( 15, 100, 100, 20 ); g.drawString( "Valores RGB: " + color.getRed() + ", " + color.getGreen() + ", " + color.getBlue(), 130, 115 ); } // fin del mtodo paintComponent } // fin de la clase JPanelColor // Fig. 12.6: MostrarColores.java Demostracin de objetos Color. import javax.swing.JFrame; public class MostrarColores { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para objeto JPanelColor JFrame frame = new JFrame( "Uso de colores" ); frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); JPanelColor jPanelColor = new JPanelColor(); // create JPanelColor frame.add( jPanelColor ); // agrega jPanelColor a marco frame.setSize( 400, 180 ); // establece el tamao del marco frame.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase MostrarColores

// Fig. 12.7: MostrarColores2JFrame.java Seleccin de colores con JColorChooser. import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JColorChooser; import javax.swing.JPanel; public class MostrarColores2JFrame extends JFrame { private JButton cambiarColorJButton; private Color color = Color.LIGHT_GRAY; private JPanel coloresJPanel; // establece la GUI public MostrarColores2JFrame() { super( "Uso de JColorChooser" ); // crea objeto JPanel para mostrar color coloresJPanel = new JPanel(); coloresJPanel.setBackground( color ); // establece cambiarColorJButton y registra su manejador de eventos cambiarColorJButton = new JButton( "Cambiar color" ); cambiarColorJButton.addActionListener( new ActionListener() // clase interna annima { // muestra JColorChooser cuando el usuario hace clic con el botn public void actionPerformed( ActionEvent evento ) { color = JColorChooser.showDialog( MostrarColores2JFrame.this, "Seleccione un color", color ); // establece el color predeterminado, si no se devuelve un color if ( color == null ) color = Color.LIGHT_GRAY; // cambia el color de fondo del panel de contenido coloresJPanel.setBackground( color ); } // fin del mtodo actionPerformed } // fin de la clase interna annima ); // fin de la llamada a addActionListener add( coloresJPanel, BorderLayout.CENTER ); // agrega coloresJPanel add( cambiarColorJButton, BorderLayout.SOUTH ); // agrega botn setSize( 400, 130 ); // establece el tamao del marco setVisible( true ); // muestra el marco } // fin del constructor de MostrarColores2JFrame } // fin de la clase MostrarColores2JFrame

// Fig. 12.8: MostrarColores2.java Seleccin de colores con JColorChooser. import javax.swing.JFrame; public class MostrarColores2 { // ejecuta la aplicacin public static void main( String args[] ) { MostrarColores2JFrame aplicacion = new MostrarColores2JFrame(); aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } // fin de main } // fin de la clase MostrarColores2

12.4 Control de tipos de letra


La clase Font contiene mtodos y constantes para manipular tipos de letra. El constructor de la clase Font recibe tres argumentos: el nombre, estilo y tamao del tipo de letra. El estilo de tipo de letra de un objeto Font puede ser Font.PLAIN, Font.ITALIC o Font.BOLD (cada uno es un campo static de la clase Font). Los estilos de tipos de letra pueden usarse combinados (por ejemplo, Font.ITALIC + Font.BOLD). El tamao de un tipo de letra se mide en puntos. Un punto es 1/72 de una pulgada. El mtodo setFont de Graphics establece el tipo de letra para dibujar el texto que se va a mostrar. El mtodo getStyle de Font devuelve un valor entero que representa el estilo actual del objeto Font. El mtodo getSize de Font devuelve el tamao del tipo de letra, en puntos. El mtodo getName de Font devuelve el nombre del tipo de letra actual, como una cadena. El mtodo getFamily de Font devuelve el nombre de la familia a la que pertenece el tipo de letra actual. El nombre de la familia del tipo de letra es especfico de cada plataforma. La clase FontMetrics contiene mtodos para obtener informacin sobre los tipos de letra. La mtrica de tipos de letra incluye la altura, el descendente (la distancia entre la base de la lnea y el punto inferior del tipo de letra), el ascendente (la cantidad que se eleva un carcter por encima de la base de la lnea) y el interlineado (la diferencia entre el descendente de una lnea de texto y el ascendente de la lnea de texto que est arriba; es decir, el espaciamiento entre lneas).

Figura 12.9 | Las fi chas HSB y RGB del cuadro de dilogo JColorChooser.

// Fig. 12.11: FontJPanel.java Muestra cadenas en distintos tipos de letra y colores. import java.awt.Font; import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class FontJPanel extends JPanel { // muestra objetos String en distintos tipos de letra y colores public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama al mtodo paintComponent de la superclase // establece el tipo de letra a Serif (Times), negrita, 12 puntos y dibuja una cadena g.setFont( new Font( "Serif", Font.BOLD, 12 ) ); g.drawString( "Serif 12 puntos, negrita.", 20, 50 ); // establece el tipo de letra a Monospaced (Courier), cursiva, 24 puntos y dibuja una cadena g.setFont( new Font( "Monospaced", Font.ITALIC, 24 ) ); g.drawString( "Monospaced 24 puntos, cursiva.", 20, 70 ); // establece el tipo de letra a SansSerif (Helvetica), simple, 14 puntos y dibuja una cadena g.setFont( new Font( "SansSerif", Font.PLAIN, 14 ) ); g.drawString( "SansSerif 14 puntos, simple.", 20, 90 ); // establece el tipo de letra a Serif (Times), negrita/cursiva, 18 puntos y dibuja una cadena g.setColor( Color.RED ); g.setFont( new Font( "Serif", Font.BOLD + Font.ITALIC, 18 ) ); g.drawString( g.getFont().getName() + " " + g.getFont().getSize() + " puntos, negrita cursiva.", 20, 110 ); } // fin del mtodo paintComponent } // fin de la clase FontJPanel

// Fig. 12.12: TiposDeLetra.java Uso de tipos de letra. import javax.swing.JFrame; public class TiposDeLetra { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para FontJPanel JFrame marco = new JFrame( "Uso de tipos de letra" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Mtrica de los tipos de letra.

// Fig. 12.15: MetricaJPanel.java import java.awt.Font; import java.awt.FontMetrics; import java.awt.Graphics; import javax.swing.JPanel;

Mtodos de FontMetrics y Graphics tiles para obtener la mtrica de los tipos de letra.

public class MetricaJPanel extends JPanel { // muestra la mtrica de los tipos de letra

// Fig. 12.16: Metrica.java Muestra la mtrica de los tipos de letra. import javax.swing.JFrame; public class Metrica { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para objeto MetricaJPanel JFrame marco = new JFrame( "Demostracion de FontMetrics" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); MetricaJPanel metricaJPanel = new MetricaJPanel(); marco.add( metricaJPanel ); // agrega metricaJPanel al marco marco.setSize( 530, 250 ); // establece el tamao del marco marco.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase Metrica

12.5 Dibujo de lneas, rectngulos y valos


Los mtodos fillRoundRect y drawRoundRect de Graphics dibujan rectngulos con esquinas redondeadas. Los mtodos draw3DRect y fill3DRect de Graphics dibujan rectngulos tridimensionales. Los mtodos drawOval y fillOval de Graphics dibujan valos.

// Fig. 12.18:LineasRectsOvalosJPanel.java Dibujo de lneas, rectngulos y valos. import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class LineasRectsOvalosJPanel extends JPanel { // muestra varias lneas, rectngulos y valos public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama al mtodo paintComponent de la superclase

// Fig. 12.19: LineasRectsOvalos.java Dibujo de lneas, rectngulos y valos. import java.awt.Color; import javax.swing.JFrame; public class LineasRectsOvalos { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para LineasRectsOvalosJPanel JFrame marco = new JFrame( "Dibujo de lineas, rectangulos y ovalos" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); LineasRectsOvalosJPanel lineasRectsOvalosJPanel = new LineasRectsOvalosJPanel(); lineasRectsOvalosJPanel.setBackground( Color.WHITE ); marco.add( lineasRectsOvalosJPanel ); // agrega el panel al marco marco.setSize( 400, 210 ); // establece el tamao del marco marco.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase LineasRectsOvalos

12.6 Dibujo de arcos


Un arco se dibuja como una porcin de un valo. Los arcos se extienden desde un ngulo inicial, segn el nmero de grados especificados por el ngulo del arco. Los mtodos drawArc y fillArc de Graphics se utilizan para dibujar arcos.

// Fig. 12.24: ArcosJPanel.java // Dibujo de arcos. import java.awt.Color; import java.awt.Graphics; import javax.swing.JPanel; public class ArcosJPanel extends JPanel { // dibuja rectngulos y arcos public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama al mtodo paintComponent de la superclase // empieza en 0 y se extiende hasta 360 grados g.setColor( Color.RED ); g.drawRect( 15, 35, 80, 80 ); g.setColor( Color.BLACK ); g.drawArc( 15, 35, 80, 80, 0, 360 ); // empieza en 0 y se extiende hasta 110 g.setColor( Color.RED ); g.drawRect( 100, 35, 80, 80 ); g.setColor( Color.BLACK ); g.drawArc( 100, 35, 80, 80, 0, 110 ); // empieza en 0 y se extiende hasta -270 grados g.setColor( Color.RED ); g.drawRect( 185, 35, 80, 80 ); g.setColor( Color.BLACK ); g.drawArc( 185, 35, 80, 80, 0, -270 ); // empieza en 0 y se extiende hasta 360 grados g.fillArc( 15, 120, 80, 40, 0, 360 ); // empieza en 270 y se extiende hasta -90 grados g.fillArc( 100, 120, 80, 40, 270, -90 ); // empieza en 0 y se extiende hasta -270 grados g.fillArc( 185, 120, 80, 40, 0, -270 ); } // fin del mtodo paintComponent } // fin de la clase ArcosJPanel

// Fig. 12.25: DibujarArcos.java // Dibujo de arcos. import javax.swing.JFrame; public class DibujarArcos { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para ArcosJPanel JFrame marco = new JFrame( "Dibujo de arcos" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); ArcosJPanel arcosJPanel = new ArcosJPanel(); // crea objeto ArcosJPanel marco.add( arcosJPanel ); // agrega arcosJPanel al marco marco.setSize( 300, 210 ); // establece el tamao del marco marco.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase DibujarArcos

12.7 Dibujo de polgonos y polilneas


La clase Polygon contiene mtodos para crear polgonos. Los polgonos son fi guras con varios lados, compuestas de segmentos de lnea recta. Las polilneas son una secuencia de puntos conectados. El mtodo drawPolyline de Graphics muestra una serie de lneas conectadas. Los mtodos drawPolygon y fillPolygon de Graphics se utilizan para dibujar polgonos. El mtodo addPoint de la clase Polygon agrega pares de coordenadas x y y a un objeto Polygon.

// Fig. 12.27: PoligonosJPanel.java Dibujo de polgonos. import java.awt.Graphics; import java.awt.Polygon; import javax.swing.JPanel; public class PoligonosJPanel extends JPanel { // dibuja polgonos y polilneas public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama al mtodo paintComponent de la superclase // dibuja polgono con objeto polgono int valoresX[] = { 20, 40, 50, 30, 20, 15 }; int valoresY[] = { 50, 50, 60, 80, 80, 60 }; Polygon poligono1 = new Polygon( valoresX, valoresY, 6 ); g.drawPolygon( poligono1 ); // dibuja polilneas con dos arreglos int valoresX2[] = { 70, 90, 100, 80, 70, 65, 60 }; int valoresY2[] = { 100, 100, 110, 110, 130, 110, 90 }; g.drawPolyline( valoresX2, valoresY2, 7 ); // rellena polgono con dos arreglos int valoresX3[] = { 120, 140, 150, 190 }; int valoresY3[] = { 40, 70, 80, 60 }; g.fillPolygon( valoresX3, valoresY3, 4 ); // dibuja polgono relleno con objeto Polygon Polygon poligono2= new Polygon(); poligono2.addPoint( 165, 135 ); poligono2.addPoint( 175, 150 ); poligono2.addPoint( 270, 200 ); poligono2.addPoint( 200, 220 ); poligono2.addPoint( 130, 180 ); g.fillPolygon( poligono2); } // fin del mtodo paintComponent } // fin de la clase PoligonosJPanel

// Fig. 12.28: DibujarPoligonos.java Dibujo de polgonos. import javax.swing.JFrame; public class DibujarPoligonos { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para objeto PoligonosJPanel JFrame marco = new JFrame( "Dibujo de poligonos" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); PoligonosJPanel poligonosJPanel = new PoligonosJPanel(); marco.add( poligonosJPanel ); // agrega poligonosJPanel al marco marco.setSize( 280, 270 ); // establece el tamao del marco marco.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase DibujarPoligonos

12.8 La API Java 2D


La API Java 2D proporciona herramientas de grficos bidimensionales avanzadas para los programadores que requieren manipulaciones de grficos detallados y complejos. La clase Graphics2D, que extiende a la clase Graphics, se utiliza para dibujar con la API Java 2D. La API Java 2D contiene varias clases para dibujar fi guras, incluyendo Line2D.Double, Rectangle2D.Double, Rectangle2D.Double, Arc2D.Double y Ellipse2D.Double. La clase GradientPaint ayuda a dibujar una figura en colores que cambian en forma gradual; a esto se le conoce como degradado. El mtodo fill de Graphics2D dibuja un objeto Shape relleno; un objeto que implementa a la interfaz Shape. La clase BasicStroke ayuda a especificar las caractersticas de dibujo de lneas. El mtodo draw de Graphics2D se utiliza para dibujar un objeto Shape. Las clases GradientPaint y TexturePaint ayudan a especificar las caractersticas para rellenar fi guras con colores o patrones. Una ruta general es una fi gura construida a partir de lneas rectas y curvas complejas. Una ruta general se representa mediante un objeto de la clase GeneralPath. El mtodo moveTo de GeneralPath especifica el primer punto en una ruta general. El mtodo lineTo de GeneralPath dibuja una lnea hasta el siguiente punto en la ruta. Cada nueva llamada a lineTo dibuja una lnea desde el punto anterior hasta el punto actual. El mtodo closePath de GeneralPath dibuja una lnea desde el ltimo punto hasta el punto especificado en la ltima llamada a moveTo. Esto completa la ruta general. El mtodo translate de Graphics2D se utiliza para mover el origen de dibujo hasta una nueva ubicacin. El mtodo rotate de Graphics2D se utiliza para girar la siguiente fi gura a mostrar.

// Fig. 12.29: FigurasJPanel.java // Demostracin de algunas figuras de Java 2D. import java.awt.Color; import java.awt.Graphics; import java.awt.BasicStroke; import java.awt.GradientPaint; import java.awt.TexturePaint; import java.awt.Rectangle; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; import java.awt.geom.RoundRectangle2D; import java.awt.geom.Arc2D; import java.awt.geom.Line2D; import java.awt.image.BufferedImage; import javax.swing.JPanel; public class FigurasJPanel extends JPanel { // dibuja figuras con la API Java 2D public void paintComponent( Graphics g ) { super.paintComponent( g ); // llama al mtodo paintComponent de la superclase Graphics2D g2d = ( Graphics2D ) g; // convierte a g en objeto Graphics2D // dibuja un elipse en 2D, relleno con un gradiente color azul-amarillo g2d.setPaint( new GradientPaint( 5, 30, Color.BLUE, 35, 100, Color.YELLOW, true ) ); g2d.fill( new Ellipse2D.Double( 5, 30, 65, 100 ) ); // dibuja rectngulo en 2D de color rojo g2d.setPaint( Color.RED ); g2d.setStroke( new BasicStroke( 10.0f ) ); g2d.draw( new Rectangle2D.Double( 80, 30, 65, 100 ) );

Figura 12.29 | Figuras de Java 2D. (Parte 1 de 2).

// dibuja rectngulo delimitador en 2D, con un fondo con bfer BufferedImage imagenBuf = new BufferedImage( 10, 10, BufferedImage.TYPE_INT_RGB ); // obtiene objeto Graphics2D de imagenBuf y dibuja en l Graphics2D gg = imagenBuf.createGraphics(); gg.setColor( Color.YELLOW ); // dibuja en color amarillo gg.fillRect( 0, 0, 10, 10 ); // dibuja un rectngulo relleno gg.setColor( Color.BLACK ); // dibuja en color negro gg.drawRect( 1, 1, 6, 6 ); // dibuja un rectngulo gg.setColor( Color.BLUE ); // dibuja en color azul gg.fillRect( 1, 1, 3, 3 ); // dibuja un rectngulo relleno gg.setColor( Color.RED ); // dibuja en color rojo gg.fillRect( 4, 4, 3, 3 ); // dibuja un rectngulo relleno // pinta a imagenBuf en el objeto JFrame g2d.setPaint( new TexturePaint( imagenBuf, new Rectangle( 10, 10 ) ) ); g2d.fill( new RoundRectangle2D.Double( 155, 30, 75, 100, 50, 50 ) ); // dibuja arco en forma de pastel en 2D, de color blanco g2d.setPaint( Color.WHITE ); g2d.setStroke( new BasicStroke( 6.0f ) ); g2d.draw( new Arc2D.Double( 240, 30, 75, 100, 0, 270, Arc2D.PIE ) ); // dibuja lneas 2D en verde y amarillo g2d.setPaint( Color.GREEN ); g2d.draw( new Line2D.Double( 395, 30, 320, 150 ) ); // dibuja lnea 2D usando el trazo float guiones[] = { 10 }; // especifica el patrn de guiones g2d.setPaint( Color.YELLOW ); g2d.setStroke( new BasicStroke( 4, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND, 10, guiones, 0 ) ); g2d.draw( new Line2D.Double( 320, 30, 395, 150 ) ); } // fin del mtodo paintComponent } // fin de la clase FigurasJPanel

Figura 12.29 | Figuras de Java 2D. (Parte 2 de 2).


// Fig. 12.30: Figuras.java Demostracin de algunas figuras de Java 2D. import javax.swing.JFrame; public class Figuras { // ejecuta la aplicacin public static void main( String args[] ) { // crea marco para objeto FigurasJPanel JFrame marco = new JFrame( "Dibujo de figuras en 2D" ); marco.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); // crea objeto FigurasJPanel FigurasJPanel figurasJPanel = new FigurasJPanel(); marco.add( figurasJPanel ); // agrega figurasJPanel to marco marco.setSize( 425, 200 ); // establece el tamao del marco marco.setVisible( true ); // muestra el marco } // fin de main } // fin de la clase Figuras

Potrebbero piacerti anche