google plus facebook twitter youtube

Ejemplo práctico de MVC java Swing con Netbeans

by jc Mouse Jueves, febrero 9, 2012

Programación de Asignaturas

Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de negocio en tres componentes distintos. (Según Santa Wikpedia)

Un poco de teoria.

  • Modelo: Esta es la representación específica de la información con la cual el sistema opera. Tambien es la que interactua directamente con la base de datos
  • Vista: Este presenta el modelo en un formato adecuado para interactuar con el sistema, usualmente la interfaz de usuario.
  • Controlador: Este responde a eventos, usualmente acciones del usuario, e invoca peticiones al modelo y, probablemente, a la vista.

Flujo que sigue la implementación de este modelo.

  1. El Usuario interactua con el sistema a travez de la Vista de Usuario (GUI) por ejemplo presionando botones, introducciendo texto, moviendo el mouse por la pantalla, etc.
  2. El Controlador es el que recibe todas estas acciones provocadas por la interaccion Usuario-Interfaz y actua en consecuencia, “Si Evento X entonces realizar Acción Y“.
  3. El controlador entonces accede al Modelo para, dependiendo del evento solicitado, realizar una actualización (registro, edición o eliminado de información) en la base de datos o solicitar información (una consulta por ejemplo).
  4. La información es procesada en modelo-controlador y es el controlador el encargado de generar una salida para el usuario (Mensaje de error si ocurrio un problema, actualización de información presente en pantalla o generar una nueva pantalla).
  5. Entonces la la Interfaz de usuario (Vista) queda otra vez en espera de una acción del usuario del sistema para repetir el ciclo nuevamente.

:) Hasta ahi todo bien, es la teoria resumida (espero que bien) de lo que es un Patron MVC (Model, View and Controller) pero nada es la teoria si no la llevamos a la practica, sin embargo debo decir que el patrón MVC es más común en aplicaciones web que en aplicaciones de escritorio, buscando información en la internet son pocas y la gran mayoria información en ingles (sin dibujos :( ) sobre aplicaciones Swing-Java, pero eso no quiere decir que no se pueda, si se puede, y es más Java tiene sus propias herramientas para implementar este patrón (Observer y Observable) pero para este proyecto decidi basarme más en un modelo PHP-MVC que tengo, en el cual la migración no es muy complicada ya que ambos trabajan bajo POO.

Herrammientas utilizadas. Se utilizaron las siguientes tecnologias:

  • IDE Netbeans 6.9
  • Un servidor de Base de Datos MySQL
  • Librerias para el manejo de reportes (JasperReport v3.7.2)

- commons-beanutils-1.8.2.jar
- commons-collections-3.2.1.jar
- commons-digester-1.7.jar
- commons-javaflow-20060411.jar
- commons-logging-1.1.jar
- groovy-all-1.5.5.jar
- iText-2.1.7.jar
- jasperreports-3.7.2.jar

  • Conector *.JAR para Java y MySQL

mysql-connector-java-5.1.6-bin.jar

  • Librerias para el diseño de la interfaz de usuario (Estas librerias son escritas por mi y estan en la Web/Blog)

- j2Button.jar: Para el manejo de botones multilinea
- JCDesktopPane.jar: Para trabajar con formularios MDI y con imagen de fondo.
- jcMousePanel-1.6.9.jar: Para agregar imagenes y degradado a los JPanel.
- jcTablaAsignatura.jar: Este componente simula una pequeña tabla para trabajar con la info de la base de datos.

Todas estas librerias estan dentro el archivo de descarga al final de la página :)

  • Un diseñador de reportes JaspertReport o puedes usar tambien el plugin para Netbeans

¿Que necesitas saber?

  • Java Intermedio-Avanzado
  • Lenguaje MySql
  • Uso de Netbeans el IDE que utilizamos para el proyecto (agregar librerias, cambiar propiedades, etc)
  • Uso de JasperReport

¿Qué espero de ti?

  • Primero que te guste el proyecto y aprendas con él
  • Que realices criticas constructivas, yo no lo se todo y me equivo, pero de los errores se aprende :)
  • Si te sirvio el proyecto, recomiendalo ;)

EL PROYECTO

java swing mvc

reporte java

El proyecto elegido para la implementación del Patrón MVC-Java es el de “Programación de Asignaturas” de una Universidad Imaginaria con la impresión de su respectiva matriculación.

Al iniciar el sistema debes autentificarte dando tu CU (Carnet Universitario) y tu CI (Carnet de identidad), una vez logueado en el sistema debes programarte, si ya estas programado, el sistema no te deja programarte dos veces, solo puedes ver tu matriculación y realizar la impresión del mismo, caso contrario el sistema te presenta una lista de 8 asignaturas con sus respectivos grupos, los cuales puedes seleccionar y programar. Pero mejor ve el siguiente video asi te queda más claro todo.

Pues nada eso es todo, el proyecto esta tan comentado que te aburriras leyendome :)

Click para descargar

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!

Sobre el autor y el sitio web

Yo soy yo :) Mouse o como algunos de ustedes me llaman 'El Cochinote', Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando

Enjoy! :)

50 comentarios en “Ejemplo práctico de MVC java Swing con Netbeans”

  1. Hebert Elvis dice:

    Man Agradecerte por tus aportes que personalmente me esta ayudando y mucho gracias nuevamente

  2. Antonio dice:

    ¡Muchas gracias por compartir tus proyectos!. La verdad que me están ayudando mucho y estoy aprendiendo.
    Ya fueran muchos como tu compartiendo y explicando las cosas.

    Saludos.

  3. Alexis dice:

    Excelente, gracias por compartir tus conocimientos, estoy iniciandome en Java y de seguro me servirá mucho estar pendiente de lo que escribes.

    Gracias.

  4. Yadimyr dice:

    Man eres excelente….. me gustaria contactarme con tigo. gracias

    1. Mouse dice:

      me encuentras en facebook :)

  5. jose narvaez dice:

    Men no tengo ni idea q es jasperreports, y ps no eh podido correr el programa ya q me salen errores tanto en la vista como en el modelo por ejemplo: net.sf.jasperreports.engine.JRException;
    me dice q no existe, porfavor ayudame ahi lo mas pronto posible me interesa mucho saber respondeme a santos_jrng@hotmail.com

    1. Mouse dice:

      pues ahi tu error, no puedes hacer funcionar si no tienes al menos los conocimientos básicos, este ejemplo es para usuarios intermedios quienes ya tienen claro muchos conceptos sobre programación java y sus librerias, te sugiero que te des una vuelta por los tutoriales mas sencillos, para que te familiarices con java :)

  6. Alexis dice:

    Disculpa la pregunta, qué tengo que hacer para descargar el ejemplo?. Siguiendo los pasos llego hasta que aparece el botón de descargar el archivo, (después de esperar el tiempo que me pide la aplicación), y cuando presiono el botón no sucede nada.
    Alguien me puede auxiliar con ésto, porque me interesa mucho el ejemplo, la explicación del proceso me parece excelente.

    1. Mouse dice:

      seguramente estas utilizando IE, utiliza otro navegador como firefox o crome :)

  7. Gustavo dice:

    Muchas gracias estoy trabajando en un proyecto de la U. Seguro me servira mucho
    Mil gracias

  8. Oscar dice:

    hola me da mucho gusto que por medio de esta pag. pueda compartir tus conocimientos y así los que queramos aprender nos ayudes. he estado visitando tu pag. continuamente y me ha ayudando bastante. Espero y sigas así. te mando saludos desde México,Veracruz.

    1. Mouse dice:

      ok gracias por la buena vibra, saludos desde Bolivia :)

  9. Felix dice:

    Exelente muchas gracias!!!!!

  10. Luis Delgado dice:

    Bueno Tutorial que has hecho, habre si podrias hacer un mvc web. Te agradeceria bastante.
    Saludos desde Peru

  11. csar dice:

    gracias gracias gracias gracias

  12. yeltsin dice:

    muy bueno los tips he me estan ayudando muxho

  13. buenas noches, de pana que tengo tiempo sirviendome de tus proyectos, todos han sido útiles para mis proyectos también, me has dado muchas ideas…. Felicitaciones..permanece aquí siempre

  14. me salen varios errores en el Controlador, y trato de hacer el login pero el GridBad no me deja :(

    1. Mouse dice:

      ¿cual error?

  15. manuel dice:

    run:
    OK base de datos db_programacion listo
    Exception in thread “main” java.lang.RuntimeException: Uncompilable source code – package j2Button does not exist
    at vista.principal.(principal.java:125)
    at jcprogramacion.Main.main(Main.java:19)
    Java Result: 1
    BUILD SUCCESSFUL

    mira lo que me dice amigo

    1. Mouse dice:

      el error te dice todo “J2Button no existe” asegúrate de añadir las librerías necesarias a netbeans :)

  16. Richar16 dice:

    Sinceramente se te agradece el esfuerzo y el querer compartir tu conocimiento, en lo personal me ha servido de mucho los proyectos de esta Web ya que estoy cursando la carrera de Ing. en Sistemas Comp. Espero sigas asi y GRACIAS de nuevo.

    UNA PREGUNTOTA CURIOSA: ¿Haz trabajado con algun Lector de Huella Digital? X lenguaje de programacion. Es para un proyecto.

    Ah me gusta tu manera de programar!!!
    SUERTE Y ESPERO ME PUEDAS CONTESTAR…

    1. Mouse dice:

      gracias, respecto a tu pregunta, no, no e trabajado con lectores de huella digital

  17. Javier Parra dice:

    Excelente te felicito excelente web site.

  18. mario dice:

    abes de algun ejemplo de sincronizacion de dos o mas Jcombobox ejemplo: dos JCombobox conectados a una base de datos con dos tablas vinculadas, cuando seleccionas un item en el combo 1 se filtran los datos relacionados en el combo 2. llevo semanas buscado algo de esto en la web y nada.

    1. Mouse dice:

      pues no tengo ningún ejemplo ahora, pero si se puede hacer :)

      idea para un nuevo post, gracias

  19. angel dice:

    int limite = (datos.length>=10)?10 : datos.length;
    for(int i=0; i<this.frmprogramacion.TablaAsignaturas.getNumFilas();i++)
    Me sale el error segun entiendo que TablaAsignaturas no esta declarado
    saludos

    1. Mouse dice:

      :/ Si mal no recuerdo “tablaasignaturas” es un componente, debes añadirlo al proyecto para utilizarlo :)

  20. benjamin dice:

    Mouse un saludo desde México, excelente proyecto funciono sin ningun problema, aun no reviso todo el codigo pero lo poco que estube revisando esta perfecto ya que para implementar MVC con swing hay poca información y no es muy clara, pero tú codigo es bastante entendible, Saludos.

  21. jp dice:

    muy buena aplicacion men!!
    felicidades
    se ve a la perfeccion el patron mvc

  22. VIANEY VARGAS dice:

    muchisismas gracias hermano de verdad se le agradece mucho por compartir tanto con nosotros… que Dios le de mas conocimiento y sabiduria para q la puedas compartir mas y mas como lo vienes haciendo

  23. VIANEY VARGAS dice:

    Alguien me podria ayudar con este error ya llevo por lo menos 15 diaz y no he podido resolverlo he consultado en la web y hago los pasos pero no me soluciona… porfavor necesito ayuda:: el Agente de sQL SERVER SQL EXPRESS esta detenido y no me inicia por mas que le digito comandos…. necesito pasos sencillos y al grano para solucionar con esto que ya no puedo….y cuando le doys iniciar me sale error en la solicitud o el servicio no respondio a tiempo……. tengo SQL server Express 2012.. y cuando lo instale le puse co autenticacion de windows

    1. Mouse dice:

      desinstala el SQL, limpia los registros de windows, vuelve a instalar SQL Server, si no funciona cambie de Sistema Operativo ;)

  24. Ferrar dice:

    Hola. Podrías subir algún ejemplo de software JSP echo con netbeans ??

    1. Mouse dice:

      :/ haremos el intento antes de fin de año :)

  25. vianey dice:

    excelente tutoriales muy pero muy buenos sigue asi jcMouse te agradecemo0s inmensamente

  26. Roberto dice:

    muchas gracias JC, por fin aprendi a usar MVC en Java.

  27. Ario Khan dice:

    uta tio ta weno el proyect si vale la pena estudiar u codigo fuentesige asi i suerte es una gra ayuda para principiantes cmo yo

  28. walter dice:

    ola mouse, muy xvre el tutorial (y) tenia una consulta, tu indicas que mvc no es usado mucho para las aplicaciones de escritorio, entonces ¿que patrón de arquitectura de software se usa con normalidad en java?, ah y otra consulta para hacer una aplicacion para una computadora lentita pentium IV en el que tarda demasiado iniciar la JVM, seria mejor hacer la aplicacion en VB, o se puede mejorar el inicio de la JVM ?

    1. Mouse dice:

      MVC se usa mas para aplicaciones web porque existen frameworks que ayudan bastante, en aplicaiones de escritorio hay de todo pero lo más comun es la de “tres capas” que es similar al MVC.

      :/ yo tenia una PIV con 256de RAM y java me funcionaba de maravilla, la JVM se pone lenta dependiendo de la aplicación, eso se debe al uso de muchas librerias , muchas imagenes que consumen mucho ram, etc

      java se carga en el inicio y no se puede acelerar su carga, eso esta en manos del hardware del equipo, pero puedes intentar acelerar la carga quitando programas que no uses y que se cargan igual al inicio, limpiando el registro del sistema, tal vez algun troyano te lenta la PC, etc

  29. Julian dice:

    mira tengo que hacer un pequeño programa en java como un login,donde hay dos usuarios, uno de los usuarios es el administrador y el otro es un guarda de seguridad, el administrador puede modificar, eliminar, guardar y consultar la información del formularios
    pero el usuario 2 solo puede consultar la informacion del formulario y no puede hacer ningun cambio solo consultar la informacion del formulario

    ¿como lo hago ? y donde puedo consular ejemplos para guiarme o información referente al tema que te comento Gracias

  30. noureddine dice:

    quiero jctablasignaturas
    Sin formato jar
    Ayuda Repetí el programa, pero en Inglés
    Pero yo no sé cómo cambiar el archivo jar

    Por favor ayuda

  31. juan carlos dice:

    buen aporteee…. no lo puedo descargarrr… plis sera que me lo puedes mandar a mi correo porfa… juan_carlos1345@hotmail.com porfaaaaaa….. soy fanss de netbeansss

  32. diana dice:

    muy bueno :) y la musica de fondo del video es de death note no , jajaja like.

  33. Gracias amigo, personas como usted es lo que necesita el mundo
    felicidades excelente proyecto…

  34. alan dice:

    muy buena pagina joven deberiamos abrir un grupo para poder resolver y aportar dudas en diversos sistemas saludos y un abrazo

  35. francisco dice:

    GRACIAS

  36. andres felipe dice:

    amigo nuevamente gracias por el aporte lo estaba buscando, lo descargo y cualquier cosa te comento para que me asesores gracias.

  37. Jesalbalma dice:

    Grax

    voy a revisar a ver que aprendo sobre mvc

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *


ocho − = 3

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Categorias

Ultimas entradas

Ejercicios con Hashtable y C#

Ejercicio: Escriba un programa en consola que implemente un Hashtable, cree una clase “Persona“, este será e...

Pilas con C Sharp (Ejercicio Resuelto)

Desarrolle un programa en consola con un menú para el usuario que permita agregar elementos a una pila, eliminar element...

Blog MVC en PHP (Código Fuente)

En este post dejo el código fuente de un blog en PHP desarrollado siguiendo el patrón de diseño MVC (Modelo, Vista y Con...

Ejercicios Resueltos C Sharp

1. Dado N números enteros ingresados por teclado, determine el promedio de estos 01 static void Main(string[] args) 02 {...

Cifrado del Cesar en C Sharp

En criptografía, el cifrado César, también conocido como cifrado por desplazamiento, código de César o desplazamiento de...