windows锁定屏幕使不能操作直到解锁或重启(二)(解锁键Home),解锁home,package com;
分享于 点击 3318 次 点评:217
windows锁定屏幕使不能操作直到解锁或重启(二)(解锁键Home),解锁home,package com;
package com;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Frame;import java.awt.Graphics;import java.awt.Image;import java.awt.Point;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class LockScreen extends JFrame{ private LockScreen(){} private static LockScreen screen = null; public static LockScreen getScreen(){ if(screen == null){ screen = new LockScreen(); } return screen; } public void showScreen(boolean isStarted){ Toolkit toolkit=Toolkit.getDefaultToolkit(); Dimension d=toolkit.getScreenSize(); this.setBounds(0, 0, d.width, d.height); this.setUndecorated(true); this.setAlwaysOnTop(true); this.addKeyListener(new LifeKey()); this.setVisible(true); if(!isStarted){ LockThread.getLock().startLockThread(); } } public void paint(Graphics g) { Image background = null; try { Robot rbt = new Robot(); Toolkit tk = Toolkit.getDefaultToolkit(); Dimension dim = tk.getScreenSize(); background = rbt.createScreenCapture( new Rectangle(0,0,(int)dim.getWidth(),(int)dim.getHeight())); } catch (Exception ex) { ex.printStackTrace(); } Point pos = this.getLocationOnScreen(); Point offset = new Point(-pos.x,-pos.y); g.drawImage(background,offset.x,offset.y,null); } class LifeKey implements KeyListener{ @SuppressWarnings("deprecation") @Override public void keyPressed(KeyEvent e) { if(e.getKeyCode() == 36){ LockThread.getLock().setStop(true); LockThread.getLock().stop(); LockScreen.getScreen().dispose(); } } @Override public void keyReleased(KeyEvent e) { } @Override public void keyTyped(KeyEvent e) { } } public static void main(String[] args) { LockScreen.getScreen().showScreen(false); }}class LockThread extends Thread{ volatile Boolean stop = false; public Boolean getStop() { return stop; } public void setStop(Boolean stop) { this.stop = stop; } private LockThread(){} private static LockThread lock = null; public static LockThread getLock(){ if(lock == null){ lock = new LockThread(); } return lock; } public void startLockThread(){ lock.start(); } @SuppressWarnings("static-access") @Override public void run() { while(!stop){ LockScreen.getScreen().dispose(); LockScreen.getScreen().showScreen(true); try { lock.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } }}//该片段来自于http://byrx.net
用户点评