[Java] 抓取当前屏幕信息 →→→→→进入此内容的聊天室

来自 , 2019-05-31, 写在 Java, 查看 108 次.
URL http://www.code666.cn/view/ed422773
  1. import java.awt.BorderLayout;
  2. import java.awt.Container;
  3. import java.awt.Dimension;
  4. import java.awt.Graphics;
  5. import java.awt.Rectangle;
  6. import java.awt.Robot;
  7. import java.awt.Toolkit;
  8. import java.awt.event.ActionEvent;
  9. import java.awt.event.ActionListener;
  10. import java.awt.image.BufferedImage;
  11.  
  12. import javax.swing.JButton;
  13. import javax.swing.JFrame;
  14. import javax.swing.JPanel;
  15. import javax.swing.WindowConstants;
  16.  
  17. /**
  18.  * 捕获屏幕,屏幕截图工具
  19.  */
  20. public class ScreenCaptureFrame extends JFrame implements ActionListener {
  21.  
  22.     private ScreenCaptureUtil scrCaptureUtil = null;// 捕获屏幕的工具类
  23.     private PaintCanvas canvas = null;// 画布,用于画捕获到的屏幕图像
  24.  
  25.     public ScreenCaptureFrame() {
  26.         super("Screen Capture");
  27.         init();
  28.     }
  29.  
  30.     /**
  31.      * 初始化
  32.      */
  33.     private void init() {
  34.  
  35.         scrCaptureUtil = new ScreenCaptureUtil();// 创建抓屏工具
  36.         canvas = new PaintCanvas(scrCaptureUtil);// 创建画布
  37.  
  38.         Container c = this.getContentPane();
  39.         c.setLayout(new BorderLayout());
  40.         c.add(canvas, BorderLayout.CENTER);
  41.  
  42.         JButton capButton = new JButton("抓 屏");
  43.         c.add(capButton, BorderLayout.SOUTH);
  44.         capButton.addActionListener(this);
  45.         this.setSize(400, 400);
  46.         this.setVisible(true);
  47.         this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  48.     }
  49.  
  50.     public void actionPerformed(ActionEvent e) {// 点击“抓屏”按钮时,在画布上画屏幕图像
  51.         canvas.drawScreen();
  52.     }
  53.  
  54.     public static void main(String[] args) {
  55.         new ScreenCaptureFrame();
  56.     }
  57. }
  58.  
  59. /**
  60.  * 抓屏工具类
  61.  */
  62. class ScreenCaptureUtil {
  63.     private Robot robot = null;// 抓屏的主要工具类
  64.     private Rectangle scrRect = null;// 屏幕的矩形图像
  65.  
  66.     public ScreenCaptureUtil() {
  67.         try {
  68.             robot = new Robot();// 创建一个抓屏工具
  69.         } catch (Exception ex) {
  70.             System.out.println(ex.toString());
  71.         }
  72.         // 获取屏幕的矩形图像
  73.         Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize();
  74.         scrRect = new Rectangle(0, 0, scrSize.width, scrSize.height);
  75.     }
  76.  
  77.     /**
  78.      * 抓屏方法
  79.      *
  80.      * @return 返回一个图像
  81.      */
  82.     public BufferedImage captureScreen() {
  83.         BufferedImage scrImg = null;
  84.         try {
  85.             scrImg = robot.createScreenCapture(scrRect);// 抓的是全屏图
  86.         } catch (Exception e) {
  87.             System.out.println(e.toString());
  88.         }
  89.         return scrImg;
  90.     }
  91. }
  92.  
  93. /**
  94.  * 画布类,用于显示抓屏得到的图像
  95.  */
  96. class PaintCanvas extends JPanel {
  97.     private ScreenCaptureUtil scrCaptureUtil = null;// 抓屏工具
  98.     private BufferedImage scrImg = null;// 待画的图像 
  99.  
  100.     public PaintCanvas(ScreenCaptureUtil screenUtil) {
  101.         this.scrCaptureUtil = screenUtil;
  102.     }
  103.  
  104.     /**
  105.      * 重载JPanel的paintComponent,用于画背景
  106.      */
  107.     protected void paintComponent(Graphics g) {
  108.         if (scrImg != null) {
  109.             int iWidth = this.getWidth();
  110.             int iHeight = this.getHeight();
  111.             g.drawImage(scrImg, 0, 0, iWidth, iHeight, 0, 0, scrImg.getWidth(),
  112.                     scrImg.getHeight(), null);
  113.         }
  114.     }
  115.  
  116.     /**
  117.      * 画屏幕图像的方法
  118.      */
  119.     public void drawScreen() {
  120.         Graphics g = this.getGraphics();
  121.         scrImg = scrCaptureUtil.captureScreen();// 抓屏,获取屏幕图像
  122.         if (scrImg != null) {
  123.             this.paintComponent(g);// 画图
  124.         }
  125.         g.dispose();// 释放资源
  126.     }
  127.  
  128. }
  129.  

回复 "抓取当前屏幕信息"

这儿你可以回复上面这条便签

captcha