Java y NetBeans (II), Conexión con Java y Mysql

Por ciertos motivos recientemente me cambie de trabajo y con ello ya no seguí con el desarrollo en Java, pero como no me gusta dejar las cosas a medias durante mis ratos libres seguiré escribiendo sobre java y NetBeans. En esta ocasión como acceder a una base de datos Mysql.

Lo primero que necesitamos es el driver para que java se pueda entender con Mysql, ese driver lo pueden descargar desde este enlace: http://dev.mysql.com/downloads/connector/j/

Al descomprimir el paquete notaran varios archivos pero el que realmente nos interesa es este .jar mysql-connector-java-x.xx.x-bin.jar dependiendo del directorio de instalación de java ese archivo se debe guardar en una carpeta parecida a esta: C:\Program Files (x86)\Java\jdk1.6.0_21\jre\lib\ext   en esa carpeta ya hay otros .jar

El siguiente paso será crear una pequeña base en mysql, mi base de ejemplo se llama java y contiene una sola tabla llamada usuario que a su vez solo tiene 3 campos, usuario, contra y status. Le agregué un registro y quedó de esta manera:

Emplearé el ejemplo de la lección anterior «formulario login» para continuar. Recordando un poco el formulario pide los datos de usuario y contraseña para acceder al ‘sistema’ solo que no realizaba ninguna conexión.  Primero se debe crear la clase para conectarnos, yo le he llamado conexion. Su árbol de archivos debe quedar más o menos así:

y el codigo es el siguiente:

 package conexion;

import java.sql.*;
public class conexion {
public String bd = "java";   
 //asegurate de cambiar esto por el nombre tu usuario en mysql
public String login = "root"; 
 //aqui escribe la contraseña de ese usuario
public String password = "root";
public String url = "jdbc:mysql://localhost/"+bd;
public Statement conectar() {
Connection conn = null;
Statement st=null;
try {
Class.forName("org.gjt.mm.mysql.Driver");
conn = DriverManager.getConnection(url, login, password);
if (conn != null)
{
 System.out.println("Yeah, hemos conectado con  "+url+" ... Ok");
 st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

//conn.close();
}
}
catch(SQLException ex) {
System.out.println("Rayos!!! Hubo un problema al conectar con la base "+url);
}
catch(ClassNotFoundException ex) {
System.out.println(ex);
}
 return st;
}
}

La primera línea package conexion; puede variar según el nombre que le hayan dado a su proyecto.  En términos generales el código es fácil de comprender y como esta clase es sencilla  solo nos devolverá una variable Statement que es la que se encargara de enviar las consultas a mysql la línea más importante aquí es:

 st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

Con esto creamos la variable Statement, aunque puede utilizarse sin enviarle parámetros, para este ejemplo es necesario enviarle estos dos:

ResultSet.TYPE_SCROLL_INSENSITIVE

TYPE_SCROLL_INSENSITIVE le indica al resulset que los cambios que se hagan mientras la conexion está abierta no se reflejen, además nos servirá para detectar el numero de registros que nos arroje como resultado la consulta.

ResultSet.CONCUR_READ_ONLY

CONCUR_READ_ONLY establece que los datos que se devuelven serán de solo lectura.

Regresamos al formulario principal  y hacemos visible el componente dialog y damos doble clic en el botón ingresar para ver su método ActionPerformed

Si siguieron el ejemplo anterior recordaran que si se dejaba uno de los campos vacios el formulario muestra un mensaje de error pero si se ingresan los datos nos deja ver el formulario principal ahora nos vamos precisamente a esa sección del método para realizar la consulta desde nuestra base; El código que se agregará cuando se introduzcan los datos de usuario y contraseña será este:

//creamos una instancia de la clase conexion
conexion conectar = new conexion();
//se llama a la funcion conectar que nos devuelve un statement
Statement st =conectar.conectar();

try
{
   //realizamos la consulta
   ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE usuario='"+usuario+"' AND contra ='"+password+"'");
   //hay que posicionarse en el ultimo registro
   rs.last();

//recuperamos el numero de registros del Resulset
int encontrado=rs.getRow();

if(encontrado==1) // si nos devuelve un registro significa que la autenticacion es correcta y mostramos el formulario
{
   this.setVisible(true);
   dialog_login.setVisible(false);
}
else
{
     JOptionPane.showMessageDialog(null, "Sus datos son incorrectos, reviselos");
}
   //cerramos la conexion
   rs.close();
   st.close();
}
catch (Exception e)
{
e.printStackTrace();
}

Como vemos el código tampoco es tan complicado de entender.  Aquí les pongo el código completo del método ActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
 String usuario=tusuario.getText();
 String password=tcontra.getText();
 if((usuario.isEmpty())||(password.isEmpty()))
 {
 JOptionPane.showMessageDialog(null, "Ingrese su nombre de usuario y contraseña");
 }
 else
 {
 conexion conectar = new conexion();
 Statement st =conectar.conectar();

 try
 {

 ResultSet rs = st.executeQuery("SELECT * FROM usuario WHERE usuario='"+usuario+"' AND contra ='"+password+"'");
 rs.last();

 int encontrado=rs.getRow();
 System.out.println(String.valueOf(encontrado));
 if(encontrado==1)
 {
 this.setVisible(true);
 dialog_login.setVisible(false);
 }
 else
 {
 JOptionPane.showMessageDialog(null, "Sus datos son incorrectos, reviselos");
 }

 rs.close();
 st.close();
 }
 catch (Exception e)
 {
 e.printStackTrace();
 }

 }
 }

Ejecuten el formulario y si todo sale bien se podrán ver los mensaje en la consola de java…

Desarrollo de software tabasco

y si nada sale bien pues… arremetan sin piedad contra mí en sus comentarios. Quizá lo que les resulte incomodo es trabajar con un form creado en una lección anterior y no con uno hecho desde cero; de cualquier manera aquí les dejo la lección para que la descarguen y prueben en sus maquinas.

Descargar archivos

Related Posts Plugin for WordPress, Blogger...

publicidad

53 Comments

  1. Saludos Alberto. Excelente tu aporte muchacho!
    He estado siguiendo tu ejemplo, q me a servido de mucho. Hice todo tal cual indicas y la BD no me conecta, lanza error en la linea 240 de boton ingresar ResultSet rs = st.executeQuery(«SELECT * FROM usuario WHERE usuario='»+usuario+»‘ AND contra ='»+password+»‘»);
    . Tengo una tarea escolar muy similar a esa y me gustaria mucho q me ayudaras.. Gracias de ante mano.

  2. Hola. Gracias por responder tan pronto! No conecta a la BD, en la consola aparece: Rayos!!! Hubo un problema al conectar con la base jdbc:mysql://localhost/java
    java.lang.NullPointerException
    at conexion.principal.jButton1ActionPerformed(principal.java:240)…
    Y pare de contar, e hecho todo tal cual y nada.

  3. Instale el mysql server 5.0, hice las configuraciones respectivas, cree la tabla correspondiente y la ejecuto con exito. Baje tu ejemplo y lo importe a netbeans 6.9 y al momento de correr el programa sale ese error q no me deja avanzar, doy click en principal.java y me lleva a la linea esa 240. Soy novato en esto de java y netbeans pero tengo q hacer este trabajo.. agradezco enormemente el tiempo q empleas con tu ayuda.

  4. Hola de nuevo Jendry, bajé el ejemplo y al ejecutarlo no hubo ningún inconveniente así es que lo único que me viene a la mente es preguntarte si te aseguraste de cambiar los datos de acceso para tu base de datos mysql, me refiero a estas líneas:
    //nombre de la base de datos
    public String bd = «java»;

    // Nombre de tu usuario
    public String login = «root»;

    //el pass para acceder a la base de datos
    public String password = «root»;

    si es posible envíame unos pantallazos del mensaje de error y de la línea a al que hace referencia porque al parecer difiere de la mía.

  5. No entiendo muy bien a q te refieres con lo de cambiar los datos de acceso a la BD?? Intente con «admin» y tampoco conecta. Sale el mismo error q siempre.. Te envie material mas detallado a tu correo.

  6. Q ondas hermano ya corre el programa! revise todo, cambie los parametros y reinstale el JDK y ahi se le quito todo. Muchas gracias por tu valiosa ayuda! Ya corre y llama al form principal correctamente. Agregue un nuevo dialogo q invite al usuario a crear una sesion sino la tiene y hare otros dialogos para incorporar nuevos registros y consultas para completarlo. Solo me queda ampliarlo tal como lo piden. En cuanto vaya avanzado te envio los resultados para q los veas. Y q Dios te bendiga muchacho!!!

  7. Gracias a ti hermano por emplear tu tiempo y tus conocimientos. Todavia me quedan dudas pero tengo q echarle ganas a esto, una vez q empaque la aplicacion se exporta la base de datos o como seria ese proceso? Tengo entendido se empaqueta a traves de un archivo .jar pero no se como es ese procedimiento ni tampoco como crear un ejecutable pero para alla voy.. Espero salga todo bien. Muchisimas gracias..

  8. Hola que tal, me parece que esto es lo que necesito pero lo quiero apra sql server, ya baje el jar necesario es mas he podido hacer la conexion por si solo, ahora quisiera usarlo en una aplicacion por ejemplo un login como el que haces aqui pero me salen errores cuando pongo los campos siguientes…

    public String bd = «Biblioteca»;
    //asegurate de cambiar esto por el nombre tu usuario en mysql
    public String login = «diego»;
    //aqui escribe la contraseña de ese usuario
    public String password = «eloydie»;
    public String url = «jdbc:sqlserver://DIEGO-PC:1433″+bd;

    public Statement conectar() {
    Connection conn = null;
    Statement st=null;
    try {
    Class.forName(«com.microsoft.sqlserver.jdbc.SQLServerDriver»);

  9. Hola que tal, bueno te felicito por ayudar a gente que no sabe ..!
    Soy estudiando de informatica y bueno estoy trabajando con NetBeans y me ha dejado tres trabajos de los cuales aun no entiendo muy bien, asimismo estoy utilizando el «While», y necesito hacer que los dos numeros que ingrese salgan:: 1ero. todos los numeros , por 2do. mostrar cuantos numeros existen en ese rango y por 3er. Determinar en un rango de numeros ingresados por teclados la cantidad de pares,impares,la suma de los pares y la suma de los impares.

    Te agradeceria si me ayudaras con estos simples problemas para tu persona.

    Gracias.

  10. Hola nuevamente amigo, cuando me sale un error que me dice maso menos asi… com.microsoft.sqlserver.jdbc.SQLServerException: La instrucción no devolvió un conjunto de resultados. que puede ser? yo evidentemente stoy usando la conexion a sql server pero ese no es el problema ya q hecho la conexion normal en otras actividades solo q ahora quiero modificar un campo de una tabla y uso el siguiente codigo…
    conexion conexion = new conexion();
    Statement st = null;
    ResultSet rs = null;
    Connection con = null;
    con = conexion.Conectar();
    try {
    st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
    rs = st.executeQuery(«UPDATE MATERIAL SET EXISTENCIA=’No disponible’ WHERE ID_MATERIAL ='»+pd+»‘»);
    rs.close();
    st.close();
    conexion.Desconectar();
    }
    catch(Exception e){
    e.printStackTrace();
    }
    y me sale el error que te comente que puede ser?

  11. Disculpa amigo ya lo resolvi y solo de manera de informacion mi problema era el ResultSet aparentemente las variables de resultado esperan evidentemente resultados y en este caso yo solo hacia una modificacion en la base de datos entonces para este caso use el prepareStatement pero desde la misma variable de estado st y ahi mismo poner el query. Si lo que digo esta mal porfa corregirme ya que asi l oestoy entendiendo yo u_u.

  12. Asi es Diego, en el ejemplo yo utilicé un ResultSet porque necesitaba realizar una consulta, pero cuando tengas que insertar, eliminar o modificar registros basta con hacerlo directamente desde el Statement.

    Saludos.

  13. Hola buena la explicación, tengo una pregunta a mi me marca un erorr en el conexion.java algo de paquete defectuoso y tambien unos errores:

    /home/mozartblack/.netbeans/6.8/var/cache/executor-snippets/run.xml:49: java.io.IOException: Cannot run program «/usr/lib/jvm/java-6-sun/bin/java» (in directory «/usr/local/tomcat/webapps/desktopApplication»): java.io.IOException: error=12, No se puede asignar memoria
    at org.apache.tools.ant.taskdefs.Java.fork(Java.java:791)
    at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:211)
    at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)

  14. Hola Alberto, muchas gracias por publicar esto, me ha servido mucho para empezar con las bases de datos !
    Hasta ahora puedo conectarme, pero no puedo hacer consulta. El error está aquí:

    ResultSet rs = st.executeQuery(«SELECT * FROM usuario WHERE usuario='»+usuario+»‘ AND contra ='»+password+»‘»);

    cannot find symbol
    symbol: method executeQuery(java.lang.String)
    location: class java.beans.Statement

    cannot find symbol
    symbol: method executeQuery(java.lang.String)
    location: class java.beans.Statement

    Espero puedas ayudarme, saludos !

  15. Hola Claudio, si estas usando el código que puse en descarga no le encuentro ningún inconveniente.

    Solo se me ocurren dos cosas, te aseguraste de importar esta librería: import java.sql.*; ?

    La otra es, asegurarte si tus campos usuario y contra realmente se llaman así en tu base de datos.

  16. hola alberto muchas gracias por tu aporte, me sirve muchichimo ahora que comienzo con java y BD jee, oie una pregunta, como podria barrer la bd para hacer un update de los campos que no son nulos por registro? agradeceria tu ayuda

    1. Hola Isi,

      No creo que exista una sentencia sql que realice esa accion de un jalon, asi que se me ocurre realizarlo mediante ciclos anidados:
      No tengo ahora el codigo (prometo buscarlo) porque estoy muy atareado;

      1. mediante una consulta sql obtienes los nombres de las tablas de la base de datos (Esto se hace en un ciclo)
      2. dentro del primer ciclo para cada tabla, realizas otra consulta mysql para obtener los nombres de las columnas de esa tabla ( tambien mediante un ciclo )
      3 para cada columna de esa tabla ejecutas esta sentencia: Update $nombre_de_tabla SET $nombre_columna=»$valor» WHERE $nombre_columna=null

      Espero haberme explicado, si no lo has resuelto aun ojala encuentre el codigo pronto para enviartelo. cuanquier cosa enviame un mensaje en el blog.

      Que estes bien y gracias por visitar mi blog.

  17. ej

    c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
    ————- ———————
    1 null 1 null 1 1 1 1 1 1
    2 2 null 2 2 2 2 2 2 2

    quedaria

    c1 c2 c3 c4 c5 c6 c7 c8 c9 c10
    ————- ———————
    1 x 1 x 1 1 1 1 1 1
    2 2 x 2 2 2 2 2 2 2

  18. Que tal, y como puedo hacer que una vez que valida que los datos son correctos me mande en al pantalla bienvenido: (nombre del usuraio), obteniendolo directamente de la base de datos

  19. y si quieor hacer una verificacion de usuarios en la bd si solo con el codigo tal entre a tal formulario mientras que el otro vaya a uno distinto

  20. HOla, Interesante y buen manual, Nose si Podrias ayudarme.
    Intento conectar mediante Mysql Remoto,

    public String url=»jdbc:mysql://IP:3306/»+bd;
    public Statement conectar() {
    Connection conn = null;
    Statement st=null;
    try {
    Class.forName(«com.mysql.jdbc.Driver»);

    Cambie el Driver pero tampoco. Me sale el siguiente error.

    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    Ojala puedas ayudarme jejej Saludos.

  21. hola albeto primero quiero felicitarte por que esta genial el manual. pero sabes en este ejemplo me marca un error con la conexion de la bd, xk sera??? decarge tu codigo e igual no funciona?

  22. creo que tengo la misma pregunta que roger que no se devio de explicar bien.
    en la bd tengo dos tablas usuarios1 y usuarios2.
    lo que quiero es que cuando un usuariox se conecte,se habra una interfaz distinta para los usuarios1 y otra distinta para los usuarios2.

    y otra cosa,que tengo que poner en mi main principal en el cual no tengo nada,para que haga una llamada a mi InterfazDialogo el cual tu le has llamado principal??

    un saludo y muchas gracias por todo tu trabajo.

    1. Hola Juan, si quieres que a la hora de autenticar te muestre el form que quieras haz lo siguiente:

      Crea un nuevo Formulario por ejemplo segundo.java y agrega los componente que desees
      en el codigo de autenticacion deberas agregar esta linea para llamar al ese formulario:

      new segundo().setVisible(true);

      con eso, el segundo formulario se abrirá. En el ejemplo que esta en el blog ya no sera necesario tener esta linea: this.setVisible(true); asi que quitala.
      espero que esto te funcione, que estes muy bien.

  23. hola amigo soy la misma laura de arriba jejej encontre el error y todo funciona jeje…. ia casi termino mi proyecto solo me falta hacer reportes… podrias ayudarme con eso… grax

  24. hola amigo… ya pude hacer los reportes igual gracias,,, y te sigo molestando vale .. mira estoy manejando imagenes en la bd. mi campo es de tipo blob,,,, mi duda es para hacer la busqueda de un registro como puedo hacer que la imagen de dicho registro se muestre en un jlabel…. la busqueda ya la se hacer pero no puedo mostrar la imagen… como le hago o en que componente lo muestro,,,me ayudas xfis

    1. Hola Larura, puedes intentar con esto:

      Crea un objeto ImageIcon
      ImageIcon imagen = new ImageIcon(«tu_imagen.gif»);

      Despues cuando crees un Jlabel asignale esa imagen
      JLabel etiqueta = new JLabel(imagen);

      Ojala te pueda servir.

  25. La verdad nose, que hacer, baje el archivo que djiste pero hasta ahora no puedo crear la tabla de usuarios, es que no se donde encontrarlo o tengo que instalar java server?? ayudame por favor que no entiendo mucho

    1. Hola JD, la base de datos no tiene que ver con los archivos que tengo en descarga, en realidad lo que debes hacer es instalar un manejador de base de datos. En este caso yo estyo usando mysql y desde ahi debes crear la base de datos que esta en el ejemplo.

  26. porfas me puedes ayudar?, es que quiero jalar la tabla usuarios de sql y mostrarlo en el netbeans con un Jtable o text area, en lo que sea pero que me permita realizar operaciones como editar, eliminar y realizar busquedas…. porfas te lo pido

  27. Saludos he seguido tu explicacion y corre todo sin problemas solo que cuando compilo y ejecuto el .jar me aparece la pantalla de acceso le introdusco el usuario y es password y se queda enclavada la pantalla de incio de sesion y no muestra la Jframe y sin compilar lo hace todo normal. Cual crees tu que sera el problema

  28. hola alberto oye en la escuela me pidieron un logueo para un sistema pero en (mvc), haver si pudieras poner algun ejemplo de como dividira el modelo vista controlador para un logueo porque hasta ahorita no le entiendo muy bien gracias se agradece el tiempo de nos dedicas =) bye!!!

  29. hola alberto, primero que nada, quiero felicitarte por tu desinteres por obtener algo al enseñarnos a manejar este tipo de compliladores, te comente; he seguido los pasos tal cual, y no me logró realizar la conexión, he pensado que puede ser un problema del phpmyadmin que es donde alojo mi bd, ya q descargue tu proyecto creando la misma bd y la tabla, y tampoco realizaba la conexion, mi duda es que por que sucede esto? los errores que me marca, aparecen en la consola inferior del netbeans, y mas raro aun es que en netbeans he generado aplicacion de escritorio con conexion a bd y por si solo te genera un formulario el cual hace una insercción de datos en cualquier tabla que eliga, y mediante este proceso si realiza por si solo la conexion. Ojala me puedas ayudar por que tengo que entregar este proyecto a mas tardar el viernes mmmm

  30. estoy haciendo un sistema similar al k tiene, solo que en vez de mysql estoy usando oracle, ese mismo codigo se puede aplicar para conectar la base de datos?

  31. El boton ingresar es el lismo que el de iniciar sesion? me tiene confundido el boton de iniciar sesion con el de ingresar.

  32. hola gracias por responderme, necesito hacer una validacion con es usuario y el password demanera que si ingreso el password correto el puedaingresar de lo contrario me diga que el password o el usuario son incorrecto, me puedes ayudar con eso?

  33. hola amigo que tal mira ya todo bien cree la base de datos del ejemplo y todo ya cambien mi usuario y contraseña para que entre a mi base de datos pero al momento de ejecutar y darle al boton de iniciar sesion me salen un monton de errores me podras ayudar por favor gracias por tu tiempo

  34. hola amigo necesito tu programa completo de autenticidad de usuario, si es posible que guarde losa datos encriptados de usuario y password en la BD, y si me podrian esnvia rla BD tambien, soy principiante estoy en 1er semestre de la carrera en informatica..

    de antemano muchas gracias

  35. Una consulta estoy siguiendo tu ejemplo soy nuevo en java al momento de realizar el action performed me sale un error en la siguiente linea:
    Resulset rs = st.executeQuery(«select * from bdmrm.usuario where user='»+usuario+»‘ and contrasena = ‘»+clave+»‘»);

    Me indica que el resulset debe crearse en la clase conexion, pero en el manual no esta como puedo seguir esto, agradezco tu ayuda soy estudiante de informatica y me han dejado un proyecto de una clinica y en 3 semanas tengo que presentarlo por favor agradecere tu ayuda.

    1. Hola Carlos, probablemente el error esté en la consulta sql, cambia esto: «select * from bdmrm.usuario where user='»+usuario+»‘ and contrasena = ‘»+clave+»‘»
      Por esto: «select * from usuario where user='»+usuario+»‘ and contrasena = ‘»+clave+»‘»

      Si sigue el error, envíame por favor el texto que te arroja,

      Gracias por visitar mi blog y que estés bien.

  36. Problemas!!! Hubo un problema al conectar con la base jdbc:mysql://localhost/ingresar
    java.lang.NullPointerException
    at javaapplication3.login.jButton1ActionPerformed(login.java:90)
    at javaapplication3.login.access$000(login.java:15)
    at javaapplication3.login$1.actionPerformed(login.java:58)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:703)
    at java.awt.EventQueue.access$000(EventQueue.java:102)
    at java.awt.EventQueue$3.run(EventQueue.java:662)
    at java.awt.EventQueue$3.run(EventQueue.java:660)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:676)
    at java.awt.EventQueue$4.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:673)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.