Programa de dibujo en Java con NetBeans

1
137171

Aplicación gráfica con NetBeans

En este tutorial vamos a mostrar varias cosas a la vez:

  • Como crear una aplicación gráfica con NetBeans
  • Como hacer una pequeña herramienta de dibujo
  • Como contruir … a través de clases abstractas …. programas
    ampliables 

NetBeans es un entorno de desarrollo gratuito, muy sencillo y potente
….Vamos a capturar todas las pantallas para mostraros como crear el esqueleto
de nuestro programa.

Este es el aspecto de NetBeans al arrancarlo:

Creamos un nuevo proyecto

Pulsamos el botón NEW

Seleccionamos el título del proyecto

Ya tenemos el proyecto donde meter nuestros ficheros

Vamos a crear un directorio ….

Seleccionamos el sistema de ficheros

Creamos un nuevo directorio … editor gráfico

Ahora sobre nuestro proyecto pulsamos el botón derecho

Hemos elegido …. tipo Frame

Elegimos los metodos a sobre escribir

Vemos el resumen

El sistema ha escrito el código por nosotros

 

 

Queremos atender los eventos del raton… porque pintaremos cuando el usuario
pulse y suelte en ratón

 

Vemos que ha generado el código necesario de un modo sencillo

 

Nuestra aplicación pretende ser un pequeño programa de dibujo
simple que nos permita dibujar distintos tipos de objetos y repintarlos cuando
sea necesario, aunque lo vamos a dejar preparado para que haga más cosas
… 

Vamos a crear una clase que represente todos los objetos
pintados, otra que represente cada uno de los objetos a pintar (una clase
abstracta) y otra que sea una implementación del primer tipo de elemento …..
una linea

 

 

 

 

Bueno … aunque tengamos muchas pantallas ….. el código por
ahora generado es poco

Bueno .. creo que lo hemos captado … 

por lo que vemos a seguir
escribiendo ….. a mano el código

La verdad es que tampoco hay que escribir demasiado …. os
mostramos el programa final y luego esplicamos un poco la lógica

Lo que hemos hecho es crear un objeto
que representa todo lo que vamos pintando

    private listaObjetos nuestrosObjetos
= new listaObjetos();

Este objeto tiene dentro un vector, que
es quien irá agragando los puntos

   private Vector arrayObjetos
= new Vector();

   
    public void insertaElemento(objetoGenerico pElemento)
    {
        arrayObjetos.add(pElemento);
    }

De tal modo que nuestra aplicación,
cuando el usuario pulsa el boton, captura las coordenas iniciales y cuando lo
suelta, captura las finales, creando un objeto (en este caso una linea) y
añadiendolo al Vector

   private void botonSoltado(java.awt.event.MouseEvent
evt) {
       
        depura(«Boton
soltado»);
       
        Point punto = evt.getPoint();
        xFinTemp = punto.x;
        yFinTemp = punto.y;
       
        objetoLinea nElemento = new
objetoLinea(xIniTemp,yIniTemp,xFinTemp,yFinTemp); 
       
        Graphics g = this.getGraphics();
        nElemento.pinta(g);
        g.dispose();
       
       
nuestrosObjetos.insertaElemento(nElemento);

       
       // Add your handling code here:
    }
   
    private void botonPulsado(java.awt.event.MouseEvent
evt) {
        // Add your handling code here:
       depura(«Boton
pulsado»);
        Point punto = evt.getPoint();
        xIniTemp = punto.x;
        yIniTemp = punto.y;

 
    }

 

Cuando hay que repintar la pantalla,
los que hacemos es decir que se repinten todos los objetos

  public void paint(java.awt.Graphics pContexto)
    {
         nuestrosObjetos.pintaTodo(pContexto);
    }

Esta función itera por todos los
elementos y los manda pintar

 public void pintaTodo(Graphics pContexto)
    {
        for (int i = 0
; i< arrayObjetos.size(); i++)
        {
           
objetoGenerico elemento = (objetoGenerico) arrayObjetos.get(i);
           
elemento.pinta(pContexto);
        }

    }

 

Si veis … lo hemos dejado preparado
…. para poder leerlo y escribirlo en disco

class listaObjetos implements Serializable

 

Y para poder .. modificando 4 lineas
….. pintar distintos tipos de objetos (uso de clase abstracta)

abstract class objetoGenerico implements
Serializable
{
    abstract public void pinta(Graphics pContexto);
   
}

Descargarse el
código

 

Sobre el
Autor ..

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here