欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

windows锁定屏幕使不能操作直到解锁或重启(二)(解锁键Home),解锁home,package com;

来源: javaer 分享于  点击 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
相关栏目:

用户点评