Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Java / Proyectos / Bloquear pantalla cliente

Bloquear pantalla cliente

Autor jc mouse lunes, marzo 18, 2013

En este tutorial crearemos una aplicación que bloqueara toda la pantalla de la PC y no nos dejara realizar ninguna tarea hasta introducir un USUARIO y CONTRASEÑA. Lo que haremos sera crear un JFrame sin bordes que cubra toda la pantalla, no se deshabilitara el teclado ni el ratón  pero para evitar la combinación de teclas como WINDOWS + D o CTRL + ALT + SUP, ALT+F4, TABS, etc que nos permiten cerrar el programa o cambiar de foco, lo que haremos sera ejecutar una tarea en paralelo que cambie las propiedades de la aplicación a cada momento para que nuestra aplicación este siempre al frente, para esto java cuenta con ScheduledExecutorService.

bloqueado

Necesitamos

– IDE Netbeans 7.2

– Java

Tiempo: 15 minutos

Nivel: Intermedio

1.- Crea un nuevo proyecto llamado «blocked» sin el MAIN class (*). Añade dos JFrame «jFrameBlocked.java» y «jFrameGUI.java», finalmente añade una clase que se llamara «jBlocked.java».

ciber java

2.- jFrameGUI.java

Este JFrame solo se mostrara una vez que se desbloquee la pantalla, seria el equivalente a nuestra aplicación principal. No agregaremos nada de código solo un par de JLabels como muestra la imagen de abajo.

congratulations

3.- jFrameBlocked.java

Diseña este JFrame tal cual se ve en la imagen de abajo, ten cuidado en colocar los nombres que están marcados con un punto rojo, es importante.

ciber control

Esta JFrame es el que bloqueara toda la pantalla, por el momento no escribiremos nada de código  primero debemos crear la clase «jBlocked.java«.

4.- jBlocked.java

Esta es la clase que una vez sea creada ejecutara una tarea cada «N» tiempo, en este ejemplo sera cada 50 milisegundos lo que no da tiempo ni para usar la tecla TABS y cambiar de aplicación o.O

El código de esta clase es sencillo ya que esta reducido a una método para comenzar la tarea y otro para cambiar las propiedades de un JFrame. Cada 50 milisegundos, se cambia la propiedad del JFrame para maximizar la ventana (JFrame.MAXIMIZED_BOTH), también se utiliza el método toFront() para que el JFrame este siempre al frente, esta combinación de métodos + el tiempo en que son utilizados, impiden que una persona haga uso del escritorio.

El JFrame que sera pasado como parámetro en el constructor de clase, corresponde a JFrameBlocked.java

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.swing.JFrame;
/**
 * @web https://www.jc-mouse.net/
 * @author Mouse
 */
public class jBlocked {

    private JFrame jframe=null;

    /**
 * Constructor de clase
 */
    public jBlocked( JFrame f )
    {
        this.jframe = f;
    }

    /**
 * ejecuta una tarea cada "n" tiempo
 * Para evitar que el usuario utilice las teclas (WINDOWS + D)(TAB) y asi perder el foco
 * de la aplicación, cada 50 milisegundos se envia el JFrame al frente y se cambia su propiedad a maximizado
 */
    public void block()
    {
        ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
        scheduler.scheduleAtFixedRate( 
            new Runnable() 
            {
                @Override
                public void run() {                   
                    front(); 
                }
              }, 500, 50 , TimeUnit.MILLISECONDS ); //comienza dentro de 1/2 segundo y luego se repite cada N segundos
    }

    /**
 * 
 */
    public void front()
    {
        jframe.setExtendedState( JFrame.MAXIMIZED_BOTH );//maximizado
        jframe.toFront();
    }

}//--> fin

5.- Una vez que tenemos creado la clase jBlocked, debemos implementarla en el JFrame jFrameBlocked.

– Modificaremos el constructor de la siguiente manera:

01     public jFrameBlocked() {
02         
03         this.setUndecorated(true);//quita bordes a jframe
04         
05         initComponents();
06         
07         this.setDefaultCloseOperation( DO_NOTHING_ON_CLOSE  );//evita cerra jframe con ALT+C
08         this.setExtendedState( MAXIMIZED_BOTH );//maximizado
09         this.setAlwaysOnTop(true);//siempre al frente 
10         //nueva instancia de jBlocked pasando como parametros e este JFrame
11         new jBlocked( this ).block();
12         
13     }

También debemos agregar los eventos para cuando se presionen los botones ENTRAR o CANCELAR

01     private void btnSalirActionPerformed(java.awt.event.ActionEvent evt) {                                         
02        System.exit(0);
03     }                                        
04 
05     private void btnEntrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
06         if( this.user.getText().equals("user") && this.pass.getText().equals("1234") )
07         {
08             new jFrameGUI().setVisible(true);
09             this.dispose();            
10         }
11         else
12         {
13             JOptionPane.showMessageDialog( this, "Access denied");
14         }
15     }

Como puede verse se utiliza un IF para controlar su los datos de ingreso son correctos o no, el usuario es USER y el passwoord es 1234, si los datos son incorrectos, muestra una ventana de error, caso contrario, muestra nuestra aplicación y cierra el JFrame de bloqueo.

bloqueado

Proyecto completo + Ejemplo HERE

(*) Cuando un proyecto creado en Netbeans no cuenta con la clase Main, se debe indicar al IDE que clase ejecutar primero, para esto se debe ir a PROPIEDADES (properties), y en la opción RUN en la sección que dice Main Class, buscar en el proyecto la clase que hará de MAIN. 

Tags

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

Yo soy yo :) JC Mouse, 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. Bye

Enjoy! :)

También Te Podría Interesar

Gráfico de lineas con jfreechart

Gráfico de lineas con jfreechart

Los gráficos de líneas muestran una serie como un conjunto de puntos conectados mediante una línea. Los valores se repre...

Proyecto de base de datos Firebird VB

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic d...

Depuración avanzada en PHP

Depuración avanzada en PHP

Xdebug es una extensión para PHP que nos ayuda con la depuración y el desarrollo de aplicaciones. Contiene un depurador...

Leer datos de Firebase desde Android

Leer datos de Firebase desde Android

En este post crearemos una aplicación en Android Studio para conectarnos con nuestra base de datos de Firebase y leer al...

Programa en la nube sin instalar nada con repl.it

Programa en la nube sin instalar nada con repl.it

Repl.it es un proyecto de tres jóvenes emprendedores (Amjad, Haya, Maso), es un compilador en linea el cual te permite p...

4 IDEs online para java y mucho más

4 IDEs online para java y mucho más

A continuación te muestro 4 herramientas online para programadores en lenguaje Java y otros lenguajes de programación co...

7 comentarios en “Bloquear pantalla cliente”

  1. Jose Rios dice:

    mm.. interesante Gracias Amigo !!

  2. andree dice:

    muy buenazo, justo lo que estaba buscando

  3. elder monzon dice:

    excelente aporte como siempre

  4. MASAYA09 dice:

    Muy buen tuto, me a servido para mi proyecto de mysql con netbeans……….. compartido

  5. Miguel dice:

    muy bueno pero tengo una pregunta en la pantalla azul no se puede colocar una imagen

    1. Mouse dice:

      claro que si campeón 🙂

  6. jose dice:

    exelente!! aporte mi estimado, muchas gracias!!!

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

Melody.ml  es un aplicación online que usa la I.A (Inteligencia Artificial) para procesar archivos MP3 y separar en pist...

Small Basic es un lenguaje de programación propiedad de Microsoft creado especialmente para ayudar a los estudiantes a p...

Lorca Editor es una aplicación online creada por el desarrollador español Domingo Martin el cual tiene como objetivo el...

Eratóstenes era un matemático griego del siglo  III a.C. el cual ideó una manera rápida de obtener todos los números pri...

Herramientas

Generador de Enlaces a Whatsapp