Java - Hilos en Swing

 
Vista:

Hilos en Swing

Publicado por Maria (15 intervenciones) el 17/05/2017 18:29:43
Buenas tardes,
Acabo de empezar a programar aplicaciones web en Java con swing. Parto de una aplicacion inicial, donde en la clase principal inicializa la GUI y otra clase que implementa runnable que entiendo que es el hilo de despacho de eventos.
En la clase principal el main tiene la tipica estructura de todo main de swing y luego se inicializa la aplicacion y se lanza un hilo para buscar un aparato y conectarse a el.
El problema, es que al inicializar la aplicacion, si llamo a un metodo de la clase que implementa runnable me da un error Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException, y no se porque.

Mi primera duda es, cuando hago el new Runnable estoy creando un objecto de la clase despacho de eventos??.
Si el constructor de esta clase esta definido como: public LockIn(InetAddress address, String serialNumber,LockInApp lockInApp) {


super();

this.serialNumber = serialNumber;
this.address = address;
this.Maria = Maria;
}

Si el equipo no se ha conectado con el aparato entonces por eso da el error ?, ya que no se puede crear un objeto de la clase que implementa Runnable?.

Muchas gracias
Un saludo
Maria

class Maria

private JFrame frmLockInApp;

* Launch the application.
*/
public static void main(String[] args) throws IOException{
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
System.out.println("Start");
Maria window = new Maria();
window.frmLockInApp.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
/**
* Create the application.
*/
public Maria() {
initialize();
try {
System.setProperty("java.net.preferIPv4Stack" , "true");
discoveryThread = new DiscoveryServerThread(this); /* This thread runs while the app is scanning the network for devices.
discoveryThread.start();
} catch (Exception e) {
e.printStackTrace();
}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Hilos en Swing

Publicado por Tom (1831 intervenciones) el 17/05/2017 19:34:05
Es prácticamente imposible saber a qué te refieres ... ¿ puedes especificar en dónde se produce esa excepción que comentas ?
Por otra parte, no, Runnable no tiene nada que ver con el hilo de eventos de swing (no directamente, al menos).

Te recomiendo que te leas los tutoriales de swing en general y en particular:

https://docs.oracle.com/javase/tutorial/uiswing/concurrency/worker.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hilos en Swing

Publicado por Maria (15 intervenciones) el 17/05/2017 19:42:29
Hola,

La excepcion se produce cuando llamo a un metodo de la clase que implementa runnable.
Tengo mi clase Maria donde esta el main y crea el objeto que es una Frame. Hasta ahi todo perfecto.
Luego tengo otra clase que implementa runnable donde estan definidos distintos metodos a los cuales se llaman cuando interactuamos con la Frame, es ahi donde se lanza la excepcion, por ejemplo, tengo unas pestañas en mi frame, cuando selecciono una pestaña se llama a un metodo de la clase que implementa Runnable, y ahi se produce la excepcion.

Mi mayor duda es que se llama a un metodo de una clase que implementa runnable pero no se ha creado previamente un objeto de esta clase, y esta clase se define
public class LockIn implements Runnable
por lo cual entiendo que antes de llamar a un metodo de ella, habrá que crear un objeto a la misma, o eso lo hace el new Runnable().
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hilos en Swing

Publicado por Tom (1831 intervenciones) el 17/05/2017 21:28:15
Pues sí, por supuesto, si el método en cuestión no es static hay que crear un objeto ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Hilos en Swing

Publicado por Maria (15 intervenciones) el 18/05/2017 08:18:29
La clase que implementa runnable, define los metodos de actuacion del usuario con la GUI.
Entonces, donde debo inicializar esta clase?, es ahi donde tengo la duda.
Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar