elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con Threads al pasar un dato mediante argumentos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con Threads al pasar un dato mediante argumentos  (Leído 1,779 veces)
AlterMundis

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Problema con Threads al pasar un dato mediante argumentos
« en: 23 Enero 2013, 13:29 pm »

Hola amigos, me presento soy AlterMundis y quiero que me ayudéis a solucionar un problema.
Tengo el siguiente código:

Código
  1. class controladorRaton implements Runnable {
  2.        ServerSocket raton;
  3.        Socket ratonConector;
  4.        Point nuevoPunto;
  5.        DataOutputStream salidaDatos;
  6.  
  7.        public void run() {
  8.            try {
  9.                this.inicializar();
  10.                while(true){
  11.  
  12.                        salidaDatos.write(nuevoPunto.x);
  13.                        salidaDatos.write(nuevoPunto.y);
  14.  
  15.                }
  16.            } catch (IOException ex) {
  17.                        System.out.println("Problema al enviar los datos.");
  18.            }
  19.        }
  20.  
  21.        void inicializar() throws IOException{
  22.           raton = new ServerSocket(668);
  23.           ratonConector = raton.accept();
  24.           salidaDatos = new DataOutputStream(ratonConector.getOutputStream());
  25.        }
  26.        void obtenerDatosRaton(int x, int y){
  27.            nuevoPunto.setLocation(x, y);
  28.        }
  29.    }  
  30. }
  31.  

Y lo que hago es pasar las coordenadas del ratón usando el siguiente código, que esta definido en una clase aparte, otro thread (implements Runnable):

Código
  1. lblImg.addMouseMotionListener(new MouseMotionListener() {
  2.                    @Override
  3.                    public void mouseMoved(MouseEvent evt) {
  4.                        controladorHardware.obtenerDatosRaton(evt.getX(), evt.getY());
  5.                    }
  6.                    @Override
  7.                    public void mouseDragged(MouseEvent evt) {
  8.  
  9.                    }
  10.                    });
  11.  
Los threads, han sido llamados así, usando el siguiente procedimiento (uno que se encarga de enviar imagenes del escritorio al usuario y el otro que transmite clicks para poder hacer un escritorio remoto:

Código
  1. if (t == null){
  2.                        t = new Thread(this, "ServidorImagenes");
  3.                        hiloRaton = new Thread(controladorHardware, "ServidorHardware");
  4.                        t.start();
  5.                        hiloRaton.start();
  6.                }
  7.  

Es decir, lo que hace es arrancar el thread de un jframe que recoge los datos del ratón y se los pasa al otro thread que es el encargado de hacer la transferencia al servidor remoto.

Me da este error cada vez que se ejecuta la linea
Código
  1.   controladorHardware.obtenerDatosRaton(evt.getX(), evt.getY());
es decir, cada vez que muevo el ratón por el componente que esta a la escucha de las coordenadas. Se por seguro que funciona bien el evento pues por pantalla puedo mostrar las coordenadas en las que se encuentra mi ratón sobre el componente, pero en el momento de pasarlo al otro thread, dice esto:

Código:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

En la linea que os he explicado.

Espero que podáis ayudarme pues estoy desesperado y no se que diablos pasa!
Gracias de antemano!


En línea

Nasty35

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: Problema con Threads al pasar un dato mediante argumentos
« Respuesta #1 en: 23 Enero 2013, 17:37 pm »

En la clase controladorRaton debes crear un constructor, y en el definir a la variable nuevoPunto(Point), creo que ese es el error, pero no estoy seguro, no he tocado mucho eso...
Código
  1. public controladorRaton() {
  2.    this.nuevoPunto = new Point();
  3. }
Como no le has dado ningún valor a nuevoPunto está vacío, por lo tanto te dará el fastidioso error de NullPointerException (Cuando empezé en Java este error me mataba).


En línea

AlterMundis

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Problema con Threads al pasar un dato mediante argumentos
« Respuesta #2 en: 23 Enero 2013, 22:50 pm »

En la clase controladorRaton debes crear un constructor, y en el definir a la variable nuevoPunto(Point), creo que ese es el error, pero no estoy seguro, no he tocado mucho eso...
Código
  1. public controladorRaton() {
  2.    this.nuevoPunto = new Point();
  3. }
Como no le has dado ningún valor a nuevoPunto está vacío, por lo tanto te dará el fastidioso error de NullPointerException (Cuando empezé en Java este error me mataba).
No funciona :(
Al parecer, según veo en mi código, si esta inicializador, por la misma función :O

Saludos y gracias por tu tiempo!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
pasar argumentos por un CreateThread? « 1 2 »
Programación C/C++
while 11 7,457 Último mensaje 14 Octubre 2010, 23:41 pm
por Eternal Idol
Problema con Threads en libreria SDL en C++
Programación C/C++
Guillermo575 9 6,297 Último mensaje 7 Abril 2011, 06:04 am
por Guillermo575
Pasar dato de variable por POST sin formulario
PHP
Feedeex 3 10,258 Último mensaje 26 Junio 2011, 15:21 pm
por ~ Yoya ~
Pasar un dato seleccionado de un DataGridView a un ListBox
.NET (C#, VB.NET, ASP)
airtraffic 1 7,072 Último mensaje 20 Septiembre 2011, 03:34 am
por seba123neo
Problema con threads y vector de labels
.NET (C#, VB.NET, ASP)
XxyoyxX 2 2,453 Último mensaje 3 Diciembre 2011, 21:04 pm
por XxyoyxX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines