Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/02/2018, 00:03
sgrajaleshdz
 
Fecha de Ingreso: marzo-2016
Ubicación: World Wide Web
Mensajes: 30
Antigüedad: 8 años, 7 meses
Puntos: 3
Sonrisa Como cerrar una Jframe desde un DataInputStrem

Hola Saludos a Todos, esta vez el problema dentro del Servidor/Cliente.

Se pretende que por medio de un comando enviado de la maquina 'Servidor', a la maquina 'Cliente', se ejecuten ciertas instrucciones ejemplo:

Que el 'Cliente' al recibir el comando "/bloquea", llame una pantalla de bloqueo, esta instrucción ya me funciona y me llama el Jframe correspondiente, el código utilizado es el siguiente:

- Se lee el mensaje enviado por el 'Servidor' y se guarda en un String Array, posteriormente se separa y si dentro del array existe una palabra que sea igual al comando "/bloquea", se ejecuta la acción del if llamando así el nuevo Jframe

Cabe decir que dicho texto proviene de un DataInputStrem;

Código Java:
Ver original
  1. if (line.startsWith("@")) {
  2.           String[] words = line.split("\\s", 2);
  3.           if (words.length > 1 && words[1] != null) {
  4.             words[1] = words[1].trim();
  5.             if (!words[1].isEmpty()) {
  6.               synchronized (this) {
  7.                 for (int i = 0; i < maxClientsCount; i++) {
  8.                   if (threads[i] != null && threads[i] != this
  9.                       && threads[i].clientName != null
  10.                       && threads[i].clientName.equals(words[0])) {
  11.                     threads[i].os.println("<" + name + "> " + words[1]);
  12.                     int port = 2222;
  13.                     jFrameBlocked block = new jFrameBlocked();
  14.                     String comando=words[1];//Se separa la palabra de comando enviado
  15.                                                            //Por el 'Servidor'
  16.                     if("/bloquea".equals(comando)){
  17.                        //Si es igual a '/bloquea' se llama el nuevo frame                      
  18.                        block.setVisible(true);
  19.                     }
  20.                     //aqui el problema =(
  21.                     if("/desbloquea".equals(comando)){                        
  22.                        block.setVisible(false);
  23.                     }
  24.                    
  25.                     /*
  26.                      * Echo this message to let the client know the private
  27.                      * message was sent.
  28.                      */
  29.                     this.os.println(">" + name + "> " + words[1]);
  30.                     break;
  31.                   }
  32.                 }
  33.               }
  34.             }
  35.           }
  36.         }

Ahora el problema radica, en que al cambiar el parametro de setVisible a False, la ventana antes mencionada no se oculta ni se cierra

El frame que se manda a llamar contiene un Login conectado a Base de datos, de iniciar sesión este oculta la ventana y el control de la maquina 'Cliente' vuelve al usuario; la idea como tal es que el servidor pueda ocultarla sin necesidad de iniciar sesión y únicamente enviado el comando "/desbloquea".

Espero tengan alguna solución pues he intentado ya muchas cosas y visto varias paginas pero ninguna me ayuda.

...Por cierto por ahora el cliente recibe las instrucciones desde la ventana chat del cliente y al llamar el otro frame, la primer ventana no se debe cerrar pues ahí llegan los comando....
__________________
Desbloquea esos limites...