Ventana basica para graficar en Java (Graphics)

En esta ocasion quiero mostrar una propuesta de una ventana para graficar en Java y un resumen de metodos de la Clase java.awt.Graphics. Esto se me ocurrio ya que llevo la materia de graficacion y tuve que hacer uso de estos metodos para crear un dibujo sencillo. Bueno, sin mas que decir, el codigo es este:

/*
 *		Instituto Tecnologico de Zacatepec, Mor.
 * Descripcion:
 *	 Crea una ventana muy basica para graficar, y da 
 *  un resumen de metodos para graficar.
 * @author: Gonzalo Silverio gonzasilve@gmail.com
 * Archivo: PrimitivasJava.java
 * 
 */
 
import java.io.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class PrimitivasJava extends Frame
{
	
   PrimitivasJava(String titulo,int ancho,int alto)
   {       
    	setTitle(titulo);
    	setBackground(new Color(0x00,0x00,0x00) );
    	setSize(ancho,alto);
		setLocationRelativeTo(null);	//Centrar
		setResizable(false);
		
		// ### ESCUCHADOR DE VENTANA ###
    	//Para que al dar clic en la x de la esquina de este Frame se cierre
		addWindowListener(new WindowAdapter() 
		{		
			public void windowClosing(WindowEvent e) 
			{
				System.exit(0);
			}

			public void windowClosed(WindowEvent e) 
			{
				System.exit(0);			
			}
		});
	}

	public void paint(Graphics g)
	{

//		AQUI VA TODO EL CODIGO PARA GRAFICAR
//		Aqui se pueden usar las primitivas de graficacion
//		de la clase Graphics

//		A continuacion pongo un resumen de metodos de esta clase 
//		y algunas clases relacionadas.
		
//		g.drawLine(x1, y1, x2, y2); 
//		g.drawRect(x, y, ancho, alto);
//		g.fillRect(x, y, ancho, alto); 
//		g.drawOval(x, y, ancho, alto); 
//		g.fillOval(x, y, ancho, alto);  
//		g.drawArc( x, y, ancho, alto, startAngle, arcAngle); 
//		g.fillArc( x, y, ancho, alto, startAngle, arcAngle);  
//		g.drawString(String s, Posx, Posy);
		 
//		g.setColor(Color c);		establece el color de 1er plano
//		g.setFont(Font f); 		establece la fuente
		 
//		g.drawPolyline(int xPuntos[], int yPuntos[], nPuntos);
//		g.drawPolygon( int xPuntos[], int yPuntos[], nPuntos);
//		g.drawPolygon( poly);
//		g.fillPolygon( int xPuntos[], int yPuntos[], nPuntos); Poligono relleno
		
//		Las constantes de color son las siguientes:
		
//		Color.BLACK, Color.WHITE, Color.DARK_GRAY, Color.GRAY, 
//		Color.LIGHT_GRAY, Color.BLUE, Color.CYAN, Color.GREEN, 
//		Color.RED, Color.MAGENTA, Color.PINK, Color.ORANGE, 
//		Color.YELLOW, Color.BLUE, Color.CYAN  
		
//		Para crear un color (los enteros r,g,b pueden ir de 0 a 255):
//		Color miColor = new Color(int r, int g, int b);
		
//		Otra clase mas avanzada que Graphics es la clase javax.swing.Graphics2D

	}
	
	public void mostrar()
	{
		setVisible(true);
	}
	
	//Punto de entrada del programa
	public static void main(String args[])
	{
		PrimitivasJava test=new PrimitivasJava("Ventana para graficar en Java",400,400);
		test.mostrar();
   }        
   			
}

Y la ventana que se genera cuando se ejecuta el codigo anterior es esta:

JFrame listo para graficar

JFrame listo para graficar

Como se observa es una ventana al cual le he establecido un fondo negro y esta lista para usar cualquiera de los metodos de la clase Graphics. A continuacion muestro un ejemplo de un dibujo muy basico donde se usan algunos de estos metodos, el codigo:

/*
    	Instituto Tecnologico de Zacatepec, Mor.
   Descripcion:
		Ejemplo graficacion muy basico acerca del uso de los 
		metodos de la clase Graphics
   author: Gonzalo Silverio gonzasilve@gmail.com
   Archivo: GraficacionEjemplo1.java
  */
 
import java.io.*;
import java.lang.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

class GraficacionEjemplo1 extends Frame
{
	
   GraficacionEjemplo1(String titulo,int ancho,int alto)
   {       
    	setTitle(titulo);
    	setBackground(new Color(0xff,0x67,0x65) );
    	setSize(ancho,alto);
		setLocationRelativeTo(null);	//Centrar
		setResizable(false);
		
		// ### ESCUCHADOR DE VENTANA ###
    	//Para que al dar clic en la x de la esquina de este Frame se cierre
		addWindowListener(new WindowAdapter() 
		{		
			public void windowClosing(WindowEvent e) 
			{
				System.exit(0);
			}

			public void windowClosed(WindowEvent e) 
			{
				System.exit(0);			
			}
		});
	}

	public void paint(Graphics g)
	{

		//pared izquierda del cuarto
		Polygon poligono=new Polygon();
		poligono.addPoint(5, 30);
		poligono.addPoint(102, 100);
		poligono.addPoint(102, 450);
		poligono.addPoint(5, 500);
		g.setColor(new Color(0x17,0xA2,0xFF));
		g.fillPolygon(poligono);
    	
    	
		//puerta del cuarto
		Polygon puerta=new Polygon();
		puerta.addPoint(40, 190);
		puerta.addPoint(98, 215);
		puerta.addPoint(98, 453);
		puerta.addPoint(40, 482);
		g.setColor(new Color(0xC7,0xF2,0xB0));
		g.fillPolygon(puerta);
		
		Polygon Marcopuerta=new Polygon();
		Marcopuerta.addPoint(40, 190);
		Marcopuerta.addPoint(98, 215);
		Marcopuerta.addPoint(98, 453);
		Marcopuerta.addPoint(40, 482);
		g.setColor(new Color(0x00,0x00,0x00));
		g.drawPolygon(Marcopuerta);
		
		
		//perilla del la puerta
		g.setColor(new Color(0xA0,0x00,0x0A));
		g.fillOval(40,350,10,10);
		
    	//Fondo del cuarto
    	g.setColor(new Color(0x17,0xA2,0xFF));
    	g.fillRect(103,100,596,350);
    	
    	//pared derecha del cuarto
		Polygon poligono2=new Polygon();
		poligono2.addPoint(700, 100);
		poligono2.addPoint(700, 450);
		poligono2.addPoint(795, 500);
		poligono2.addPoint(795, 30);
		g.setColor(new Color(0x17,0xA2,0xFF));
		g.fillPolygon(poligono2);
		
		//techo del cuarto
		Polygon poligono3=new Polygon();
		poligono3.addPoint(3, 27);
		poligono3.addPoint(102, 99);
		poligono3.addPoint(699, 99);
		poligono3.addPoint(798, 26);
		g.setColor(Color.WHITE);
		g.fillPolygon(poligono3);
		
		//Lampara colgante
		//-------- Soporte y cuerdas  ----------
		g.setColor(Color.GRAY);		
		g.fillRect(386,60,3,15);	
		g.fillArc(380,50,15,15,0,-180);
		g.drawLine(362,78,412,68);
		g.drawLine(376,68,400,78);
		g.fillRect(361,78,2,50);	//cuerda lampara1
		g.fillRect(412,68,2,40);	//cuerda lampara2
		g.fillRect(375,68,2,30);	//cuerda lampara3
		g.fillRect(400,78,2,55);	//cuerda lampara4
		
		
		//Lamparas
		//-------- Lamparas  ----------
		g.setColor(Color.WHITE);
		g.fillArc(352,128,20,45,0,180);	//lampara1
		g.fillArc(403,108,20,45,0,180);	//lampara2
		g.fillArc(366,98,20,45,0,180);	//lampara3
		g.fillArc(391,133,20,45,0,180);	//lampara4
		
		//Mesa
		g.setColor(new Color(0xFF,0x7B,0xEB));	//		base mesa
		g.fillOval(398,485,80,30);
		g.setColor(new Color(0x67,0x61,0xFF));	//		soporte
		g.fillRoundRect(430,400,20,100,5,5);		
		g.setColor(new Color(0xC7,0x5E,0xA3));	//		Mesa
		g.fillOval(300,350,280,60);
		g.setColor(new Color(0xA5,0x32,0x92));	
		g.fillOval(309,345,263,60);
		
		//Laptop
		
		Polygon poligono4 = new Polygon();		//Pantalla
		poligono4.addPoint(385, 315);
		poligono4.addPoint(445,320);
		poligono4.addPoint(450, 365);
		poligono4.addPoint(390, 360);
		g.setColor(Color.WHITE);
		g.fillPolygon(poligono4);
		
		Polygon polPant = new Polygon();		//borde Pantalla
		polPant.addPoint(385, 315);
		polPant.addPoint(445,320);
		polPant.addPoint(450, 365);
		polPant.addPoint(390, 360);
		g.setColor(Color.BLACK);
		g.drawPolygon(polPant);
		
		
		Polygon poligono5 = new Polygon();		//CPU
		poligono5.addPoint(390, 360);
		poligono5.addPoint(450, 365);		
		poligono5.addPoint(430, 400);
		poligono5.addPoint(370, 390);
		//poligono5.addPoint(315, 485);
		g.setColor(Color.WHITE);
		g.fillPolygon(poligono5);
		
		Polygon polCPU = new Polygon();		//borde C.P.U.
		polCPU.addPoint(390, 360);
		polCPU.addPoint(450, 365);		
		polCPU.addPoint(430, 400);
		polCPU.addPoint(370, 390);
		g.setColor(Color.BLACK);
		g.drawPolygon(polCPU);

		//Ventanas		
		g.setColor(new Color(0x89,0x49,0x32));
		g.fillRect(500,150,180,170);	//Marco cafe de la ventana
		g.setColor(Color.BLACK);
		g.fillRect(505,175,170,140);	//Fondo noche de la ventana
		g.fillArc(505,155,80,40,0,180);
		g.fillArc(595,155,80,40,0,180);		
			//Luna
		g.setColor(Color.WHITE);
		g.fillOval(625,165,40,40);
		g.setColor(Color.BLACK);
		g.fillOval(635,165,40,40);
		g.setColor(new Color(0x89,0x49,0x32));
		g.fillRect(505,240,170,2);  //Linea horizontal ventanas
		g.fillRect(545,150,2,165);  //Linea vertical ventana 1
		g.fillRect(633,150,2,165); //Linea vertical ventana 2		
		g.fillRect(585,175,10,140);	//Linea divisoria de las 2 ventanas
		
		

		g.setFont( new Font("Arial",Font.PLAIN,24 ));
		g.setColor(Color.BLUE);
		g.drawString("Gonzalo Silverio",250,580);
	}
	
	public void mostrar()
	{
		setVisible(true);
	}
	
	//Punto de entrada del programa
	public static void main(String args[])
	{
		GraficacionEjemplo1 test=new GraficacionEjemplo1("Ejemplo de primitivas graficas en JAVA",800,600);
		test.mostrar();
   }        
   			
}  	//Fin del ejemplo

Y el resultado es este:

Ejemplo del uso de primitivas graficas en Java

Ejemplo del uso de primitivas graficas en Java



Espero te sirva algo de esto, recuerda que comentar=agradecer. Haa y ya sabes, si quieres los .java basta con dejar tu e-mail. Hasta pronto.

Acerca de gonzasilve
Freelance Web Developer.

37 Responses to Ventana basica para graficar en Java (Graphics)

  1. JosueTass says:

    Amigo me podrias manda el codigo? josuetass1308@gmail,com

  2. Miranda. says:

    Yo tambien soy del ITZ 😃 que hermoso fue encontrar esto justo cuando buscaba acerca de graficación y ver un artículo de un alumno o ex alumno de ITZ

  3. chok says:

    amigo ayudame a graficar datos con java 2D .. mi correo es opalma2008@gmail.com

  4. Jean says:

    Excelente me podrías enviar los .java……….saludos

  5. Rigoberto says:

    Hola que padre aplicacion elaboraste me gustaria si pudieras pasarme tus codigos de antemano gracias Albafika89@gmail.com

  6. juan says:

    me parece muy interesante el aporte me podrias enviar los java a este correo isc.juancarlos123@hotmail.com

    de antemano gracias

    salu2!!!

  7. Pollone says:

    Esta muy bien el programa, pero es mucha info, me gustari solo grafivar una funcion simple de la reflexion de una figura sencilla… ya tengo el programa que la saca solo que no se como graficar, te agradeceria tu pronta respuesta

  8. Hannah Gomez says:

    Sin palabras.. en serio! muy útiles tus explicaciones y ejemplos, gracias. 🙂

  9. carlos says:

    hola me gustaria que me enviaras el codigo a mi correo yoni.acuario@hotmail.com

  10. Jose says:

    Hola, me gustaria me mandaras el codigo a mi correo, le quiero echar un vistazo. Muchas gracias.

  11. SHedy Prog says:

    Hola que tal, espero te encuentres de maravilla… buscando un tema similar me encontré con tu post y terminandolo de leer veo que eres webDev y mas me llama mas la atención este articulo, y bueno ahora te hago una pregunta que hace referencia al tema que estoy buscando, a tu post y a tu especialidad,
    Podremos hacer Gráficas porcentuales de alguna manera dentro de un WebService y posteriormente adaptar el resultado gráfico a un PDF, para que consecuentemente la aplicación que consume el webservice tenga la posibilidad de consultar ese PDF?,
    o crees que se tenga que optar directamente por AJAX, adobe Flex, o algo por el estilo?

    desde ya te mando un Gran Saludo,
    Felicidades por el post me gusto tu estructura de codigo…

  12. jonathan eduardo says:

    muy chido creo que e ayudará a mi tarea
    quiero dibujar un ahorcado
    pero sería paso a paso
    tengo la idea de que es asi
    uso paint
    dibujo en un jtextarea
    pero cuando dibujo el cuerpo y lo demás
    usaría re paint ???
    en realidad no estoy muy seguro la verdad >_< ¡¡¡
    ya tengo el contador de los errores
    solo me falta diseñar el dibujito del monito ahorcado
    pero la verdad no esoty muy seguro si voy por buen camino
    :S ¡¡
    muchas gracias por la explicación

  13. Pingback: Convertir de Graphic a Imagen - MergeTag : MergeTag

  14. Plancarte Quezada Gutierrez says:

    Tengo una duda quiero implementar el algoritmo de punto medio para dibujar círculos con los (x,y) iniciales, el radio r y el angulo teta desde 0. Existe en java alguna funcion que me sirva carnal chido y gracias…

  15. Samue Taiea says:

    no me llego nada sino envia a la misma direccion solo que del gurlkon77@yahoo.com a hotmail o gmail es que no quisiera los 2 que se muestran en esta tu pagina es que el primero tiene un bloque grande comentado se le debe quitar esos comentarios o no? si tuvieras tutoriales u otros trabajitos mas seria genial por favor te ruego agradeciendo de antemano suerte tb saludos

    • gonzasilve says:

      …te lo acabo de reenviar haber revisa otra vez. la vez pasada tbn te lo envie y lo verifique, sino te lñlega de nueva entonces tienes algun problema con tu maquina.

      suerte en tus proyectos y gracias x tu visita..

  16. Samue Taiea says:

    le kite las lineas comentadas de este link:
    https://gonzasilve.wordpress.com/category/java/graficacion/
    y aun asi no corre el programa solo kiero ver si ambos programas funcionan en el mismo package o paquete enviame ayudas y tutoriales de swing a gurlkon77@gmail.com por favor gracias y saludos…

  17. Samue Taiea says:

    holas esta muy bueno tu trabajo sera que me lo podes enviar a gurlkon77@gmail.com gracias de antemano

  18. Monica says:

    Muchas gracias me sirvió de mucho

  19. daniel says:

    MUY BUENO EEEEEEHHHHHH ME AYUDO MUCHO TE AGRADECERIA TAMBIEN SI ME PUUEDES ENVIAR LOS .JAVA A MI CORREO leons59@htomail.com de antemano gracias

  20. Alfredo says:

    Necesito hacer un proyecto de «Juego Galaxi», en JavaNetbeans…
    y la Verdad no se por donde comenzar, yo lo hice en C#, pero es mas complicado aqui, por q no
    encuentro un TIMER, que me controle el tiempo…
    Gracias.
    POr favor, alguiien me pueda ayudar, este es mi direccion:
    sorvivor_fredo@hotmail.com

  21. Pingback: MergeTag » Blog Archive » Convertir de Graphic a Imagen

  22. Cesar chispi says:

    muy atractivo el diseño…, agradeceria si me pudieras pasar el código!!!

  23. Servio says:

    Excelente trabajo… te felicito! Agradecería muchísimo si pudieras hacermelo llegar a mi correo. Gracias y Saludos

Deja un comentario