- 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://www.codesnippet.cn/detail/121220138005.html
来源: http://www.codesnippet.cn/detail/121220138005.html