Professional Documents
Culture Documents
COM
2012
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
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).
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.
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
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
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.
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