You are on page 1of 9

JAMPER91.HOSTEI.

COM

Dibujar Figuras geomtricas en Java


Utilizando un JPanel y con netbenas
..

2012

Jorge Andrs Moreno Jaimes (jamper91)

Dibujar figuras en Java


Hola a todos, el da de hoy les traigo una gua sobre como dibujar figuras geomtricas (crculos, lneas, etc.) en un JPanel de java Para eso, voy a explicar un proyecto que ya cree, el cual es Arboles binarios, con eliminacin de nodos. Antes de empezar debemos saber que para poder pintar cualquier figura geomtrica debemos saber en que posicin la vamos a dibujar, es decir la posicin X y Y. Otra cosa que debemos saber es que para poder pintar con este tutorial, vamos a usar un JPanel, esto no quiere decir que tengamos que crear un nuevo JPanel, sino que simplemente heredamos de este, algo as:

Ahora vamos con un poco de teora (pues yo soy de los que prefieron ir a la prctica, pero no est de ms tener un poco de conocimiento). Para poder pintar cualquier elemento, o actualizar una interfaz grafica siempre llamaremos al mtodo repaint, este mtodo ya viene en la Clase JPanel, y lo que hace es llamar a la funcin paint() para realizar lo que all se encuentre. Este mtodo paint, se puede sobrescribir y recibe como parmetro un objeto Grapichs, que ser sobre el cual pintaremos nuestras figuras. Esa fue toda mi teora, puede encontrar ms referencias en internet. Ahora vamos a lo que vamos, para poder pintar cualquier figura vamos a usar los mtodos del objeto Grapichs que recibe el mtodo paint. La clase Grapichs trae consigo unos mtodos muy tiles para graficar (puedes verlos todos aqu), los que usaremos aqu sern solamente 3:
Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com
2

Jorge Andrs Moreno Jaimes (jamper91)

fillOval: Para dibujar valos con un relleno (es decir, no vacios). DrawString: Para escribir un texto. DrawLine: Para dibujar una Lnea El mtodo fillOval recibe 4 parmetros, posiciones X y Y y el alto y ancho, para poder dibujar un circulo, el alto y ancho ha de ser el mismo. El mtodo drawString recibe 3 parmetros: el texto y las posiciones, mientras que la lnea recibe 4 parmetros, el (x,y) del punto de origen, y el (x,y) del punto de destino. Aqu puede ver unos ejemplos del proyecto que mencione al principio.

Por ltimo est el problema del color, Si quiero cambiar el color de relleno?, Deseo que el texto sea de otro color?, todas esas preguntas se pueden resolver implementando el mtodo setColor de la clase Grapichs. Cuando se invoca el mtodo paint, este al momento de implementar los mtodos draw (vistos con anterioridad) los pintara con el color que se encuentre definido en el objeto g, por eso si deseamos cambiar el color de relleno, primero debemos modificar el parmetro del objeto g y luego si pintar, para usar esta funcin (setColor) solamente debemos mandarle un objeto del tipo Color, por ejemplo si deseamos que el color sea blanco, mandamos Color.WHITE y as sucesivamente (para ver una lista completa de colores poder visitar esta pagina).

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

Fjense como yo llamo siempre al mtodo setColor, antes de implementar el mtodo draw, todo esto con el fin de cambiar el color. En resumen, para poder pintar bien, sin que la pantalla parpadee tendremos que hacer lo siguiente 1. 2. 3. 4. 5. Tener un JFrame sobre el cual colocaremos el JPanel Tener el JPanel al cual sobrescribiremos el mtodo paint Escribir el cdigo den mtodo paint Llamar al mtodo repaint (que se encarga de llamar al paint ) de la clase que hereda de JPanel Llamar al mtodo repaint de la clase que hereda de Jframe.

Ahora para no dejarlos iniciados, aremos un nuevo proyecto, donde al hacer clic en la pantalla, se pintara un circulo de color rojo. 1. Creamos un nuevo proyecto en netbenas llammoslo Pintar. 2. Netbenas nos crea un clase llamada Main (si no la creo, crenla). 3. Ahora a esa clase, hacemos que herede de JPanel escribiendo extends JPanel junto al nombre de la clase, e importamos los paquetes que nos pida.

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

4. Ahora sobrescribimos el mtodo paint de esta clase, dicindole que nos cambie el color a rojo, y luego que nos pinte un circulo en las posiciones x,y. Y como esas variables no existes, las

creamos globalmente. 5. Ahora tenemos que crear un mtodo que se encarga de recibir las peticiones de pintar desde el JFrame y llama el mtodo repaint, este recibe las posiciones del mouse y repinta

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

6. A h o r a c r e a r e m o s e l J F r a m e que se encargara de contener el panel anteriormente creado y responder a los clics que del usuario, para luego llamar al mtodo pintar de la clase Main. Para crear este JFrame vamos a dar clic derecho sobre el paquete y luego en New y luego en JFrame Form, nos aparecer una ventana pidindonos el nombre, lo llamaremos ZonaDibujo y damos clic en terminar o Finish

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

7. Ahora

nos

metemos

al

cdigo

de

ese

JFrame,

dando

clic

en

source

8. Ahora en el constructor del JFrame nos encargaremos de incluir la clase Main dentro del Jframe, de tal manera que el objeto creado (de la clase main) llamado m, tenga el mismo tamao que el JFrame algo as:

9. Ahora nos falta es tomar las posiciones del mouse cuando se haga clic y mandrselas al mtodo paint del objeto m, para eso vamos al Design del JFrame (al lado de donde dimos clic para ir al source), y en cualquier lado de la zona gris damos clic derecho, nos aparece un men, vamos a Events, luego a Mouse y luego a Mouse Clicked.

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

10. Ahora el nos llevara a una zona para escribir cdigo, en esa zona nos encargamos de obtener las coordenadas x y y del mouse y se las enviamos al mtodo pintar de la clase Main, y listo, tambin les sugiero que repinten ese Jframe, para eso aaden la lnea this.repaint

11. Como la clase Main tiene un mtodo public static void main, el netbenas ejecutara ese archivo primero, para evitar eso, simplemente borramos ese mtodo de esa clase y lo corremos, al correr nos pide que seleccionemos la clase principal, y nos sugiere ZonaDibujo, los seleccionamos y damos clic en Ok

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

Jorge Andrs Moreno Jaimes (jamper91)

Ejemplos Gratis de C, java y muchos mas ...http://jamper91.hostei.com

You might also like