pintar figuras en un jpanel

9
Jamper91.hostei.com

Upload: jorge-andres-moreno-jaimes

Post on 25-Jul-2015

13.865 views

Category:

Documents


13 download

DESCRIPTION

Podes encontrar este y otros manuales en: http://jamper91.hostei.comCodigo lo podras descargar aqui: http://jamper91.hostei.com/index.php/articulos/articulo/Dibujar-figuras-geomtricas-sin-parpadear-en-JavaManual sobre como dibujar figuras geometricas en java

TRANSCRIPT

Page 1: Pintar Figuras en Un JPanel

Jamper91.hostei.com

Page 2: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

Dibujar figuras en Java

Hola a todos, el día de hoy les traigo una guía sobre como dibujar figuras geométricas (círculos, líneas, etc.) en un JPanel de java

Para eso, voy a explicar un proyecto que ya cree, el cual es Arboles binarios, con eliminación de nodos.

Antes de empezar debemos saber que para poder pintar cualquier figura geométrica debemos saber en que posición la vamos a dibujar, es decir la posición 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 teoría (pues yo soy de los que prefieron ir a la práctica, pero no está de más tener un poco de conocimiento).

Para poder “pintar” cualquier elemento, o actualizar una interfaz grafica siempre llamaremos al método repaint, este método ya viene en la Clase JPanel, y lo que hace es llamar a la función paint() para realizar lo que allí se encuentre.

Este método paint, se puede sobrescribir y recibe como parámetro un objeto Grapichs, que será sobre el cual pintaremos nuestras figuras.

Esa fue toda mi teoría, puede encontrar más referencias en internet.

Ahora vamos a lo que vamos, para poder pintar cualquier figura vamos a usar los métodos del objeto Grapichs que recibe el método paint.

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

Page 3: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

La clase Grapichs trae consigo unos métodos muy útiles para graficar (puedes verlos todos aquí), los que usaremos aquí serán solamente 3:

fillOval: Para dibujar óvalos con un relleno (es decir, no vacios).DrawString: Para escribir un texto.DrawLine: Para dibujar una Línea

El método fillOval recibe 4 parámetros, posiciones X y Y y el alto y ancho, para poder dibujar un circulo, el alto y ancho ha de ser el mismo.

El método drawString recibe 3 parámetros: el texto y las posiciones, mientras que la línea recibe 4 parámetros, 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 método setColor de la clase Grapichs.

Cuando se invoca el método paint, este al momento de implementar los métodos 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 parámetro del objeto g y luego si pintar, para usar esta función (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

Page 4: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

Fíjense como yo llamo siempre al método setColor, antes de implementar el método 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. Tener un JFrame sobre el cual colocaremos el JPanel2. Tener el JPanel al cual sobrescribiremos el método paint3. Escribir el código den método paint4. Llamar al método repaint (que se encarga de llamar al paint ) de la clase que hereda de JPanel 5. Llamar al método 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 llamémoslo Pintar.2. Netbenas nos crea un clase llamada Main (si no la creo, créenla).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

Page 5: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

4. Ahora sobrescribimos el método paint de esta clase, diciéndole 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 método que se encarga de recibir las peticiones de pintar desde

el JFrame y llama el método repaint, este recibe las posiciones del mouse y repinta

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

Page 6: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

6. Ahora crearemos el JFrame que se encargara de contener el panel anteriormente creado y responder a los clics que del usuario, para luego llamar al método 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 pidiéndonos el nombre, lo llamaremos ZonaDibujo y damos clic en terminar o Finish

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

Page 7: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

7. Ahora nos metemos al código 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 tamaño que el JFrame algo así:

9. Ahora nos falta es tomar las posiciones del mouse cuando se haga clic y mandárselas al método 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

Page 8: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

10. Ahora el nos llevara a una zona para escribir código, en esa zona nos encargamos de obtener las coordenadas x y y del mouse y se las enviamos al método pintar de la clase Main, y listo, también les sugiero que repinten ese Jframe, para eso añaden la línea this.repaint

11. Como la clase Main tiene un método public static void main, el netbenas ejecutara ese archivo primero, para evitar eso, simplemente borramos ese método 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

Page 9: Pintar Figuras en Un JPanel

Jorge Andrés Moreno Jaimes (jamper91)

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