📄 main.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package screenpen;import java.awt.AWTException;import java.awt.Color;import java.awt.Graphics;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.image.BufferedImage;import java.util.ArrayList;import java.util.List;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.JFrame;import javax.swing.JWindow;/** * * @author zhaolin */public class Main extends JWindow { private Robot r; public BufferedImage getImage() { return image; } public void setImage(BufferedImage image) { this.image = image; } private BufferedImage image; private Rectangle rect; private Line current; private List<Line> history; public Main() { current = new Line(); history = new ArrayList<Line>(); try { r = new Robot(); } catch (AWTException ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } new ImageUpdateThread(this).start(); this.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { } public void mousePressed(MouseEvent e) { current.setX1(e.getX()); current.setY1(e.getY()); setVisible(false); //r.mouseMove(e.getXOnScreen(), e.getYOnScreen()); int buttonMask = 0; switch(e.getButton()){ case MouseEvent.BUTTON1:buttonMask = MouseEvent.BUTTON1_MASK;break; case MouseEvent.BUTTON2:buttonMask = MouseEvent.BUTTON2_MASK;break; case MouseEvent.BUTTON3:buttonMask = MouseEvent.BUTTON3_MASK;break; } r.mousePress(buttonMask); updateImage(); setVisible(true); } public void mouseReleased(MouseEvent e) { setVisible(false); //r.mouseMove(e.getXOnScreen(), e.getYOnScreen()); int buttonMask = 0; switch(e.getButton()){ case MouseEvent.BUTTON1:buttonMask = MouseEvent.BUTTON1_MASK;break; case MouseEvent.BUTTON2:buttonMask = MouseEvent.BUTTON2_MASK;break; case MouseEvent.BUTTON3:buttonMask = MouseEvent.BUTTON3_MASK;break; } r.mouseRelease(buttonMask); setVisible(true); } public void mouseEntered(MouseEvent e) { //throw new UnsupportedOperationException("Not supported yet."); } public void mouseExited(MouseEvent e) { //throw new UnsupportedOperationException("Not supported yet."); } }); this.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { current.setX2(e.getX()); current.setY2(e.getY()); history.add((Line) current.clone()); repaint(); current.setX1(e.getX()); current.setY1(e.getY()); } public void mouseMoved(MouseEvent e) { //throw new UnsupportedOperationException("Not supported yet."); } }); this.setSize((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(), (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight()); this.setVisible(true); } public void paint(Graphics g) { super.paint(g); g.drawImage(image, 0, 0, this); for (Line l : history) { l.paintMySelf(image.getGraphics()); } } public BufferedImage capScreen() { rect = new Rectangle(); rect.x = 0; rect.y = 0; rect.width = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); rect.height = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); return r.createScreenCapture(rect); } public void updateImage() { this.image = capScreen(); } public static void main(String[] args) { new Main(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -