A Transparent screen to lock the Desktop.

In this code i am sharing the code to lock the PC screen by using a transparent JFrame so as to restrict others to use it.The frame disappears  only when the user enters the right username and password.This enables the user to let the background tasks going on and lock the screen.This has the only problem that it can be closed by the task manager.If you find a solution to it please let me know.

Code:

package com.oksbwn.systeminteraction;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.IOException;

import javax.microedition.io.Connection;
import javax.microedition.io.Connector;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import com.oksbwn.popUp.popMe;
import com.oksbwn.voiceEnable.Voice;

public class Hibernate
{
JFrame frame2=new JFrame();
//public static void main(String args[]) throws Exception
public void doit() throws IOException
{
try {
Connection connection = Connector.open( "btgoep://" +"04A82A5A62FB" + ":9");
connection.close();
//int x=1/0;//The condition which will trigger the frame to come up
}
catch (Exception e) {
//r.exec("shutdown -h");//s for shutdown r restart
// Runtime rt = Runtime.getRuntime();
// rt.exec("C:\Windows\System32\rundll32.exe user32.dll,LockWorkStation");

Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();// size of the screen
frame2.setBounds(0,0,scrSize.width, scrSize.height);
frame2.getContentPane().setLayout(null);
frame2.setAlwaysOnTop(true);
frame2.setUndecorated(true);
frame2.setBackground(new Color(Color.black.getRed(), Color.black.getGreen(),Color.black.getBlue(),1));
frame2.getContentPane().setBackground(new Color(Color.black.getRed(), Color.black.getGreen(),Color.black.getBlue(),50));
((JComponent)frame2.getContentPane()).setBorder(
BorderFactory.createMatteBorder( 2, 2, 2, 2, Color.black ) );
frame2.setType(javax.swing.JFrame.Type.UTILITY);
frame2.setAlwaysOnTop(true);

final JTextField textField = new JTextField();
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
frame2.repaint();
}
});
textField.setBounds(scrSize.width-150, scrSize.height-100, 140, 30);
textField.setBackground(new Color(Color.black.getRed(), Color.black.getGreen(),Color.black.getBlue(),1));
frame2.getContentPane().add(textField);
textField.setColumns(10);

final JPasswordField passwordField = new JPasswordField();
passwordField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent arg0) {
frame2.repaint();
}
});
frame2.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
passwordField.setBounds(scrSize.width-150, scrSize.height-65,140,30);
passwordField.setBackground(new Color(Color.black.getRed(), Color.black.getGreen(),Color.black.getBlue(),1));
frame2.getContentPane().add(passwordField);

JButton btnLogIn = new JButton("login");
btnLogIn.setBounds(scrSize.width-127,scrSize.height-30,77,24);
frame2.getContentPane().add(btnLogIn);
btnLogIn.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0)
{
@SuppressWarnings("deprecation")
String pass=passwordField.getText();
logClicked(pass,textField.getText());
passwordField.setText(null);
textField.setText(null);
//frame2.dispose();
}
});

final JLabel Snap = new JLabel();
Snap.setForeground(Color.RED);
Snap.setBounds(scrSize.width/2-100, scrSize.height/2-100,200,200);
frame2.getContentPane().add(Snap);

frame2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
final Runnable runnable = (Runnable) Toolkit.getDefaultToolkit().getDesktopProperty("win.sound.exclamation");
//default
if (runnable != null)
runnable.run();
Snap.setText("OOOOps You are Not Bikash");
}
});
frame2.setVisible(true);
}
}
protected void logClicked(String pass, String user)
{
String aPass="******";//Password
String aUser="oksbwn";//Username
if (aPass.compareTo(pass) == aUser.compareTo(user)==true)
{
//sucess message
}
else {
//failure message
}
}
}

Bikash Panda
Catch Me On

Bikash Panda

Blogger / Embedded System Developer at WGLabz
A techie, tinkerer and tech lover, who loves to blog and feels everyone can learn tech provided they have the right attitude towards learning and passion. By profession, I am an IOT developer working in Smart Home/ Smart Grid domain.
Bikash Panda
Catch Me On

Latest posts by Bikash Panda (see all)

Related posts