Java關於Robot類的使用


利用Robot類實現自動操作,實現效果是運行之后鼠標自動定位到整個屏幕坐標系的(635,454)位置,輸入wangtianze

 1 package com.wtz.util;
 2 
 3 import java.awt.AWTException;
 4 import java.awt.Robot;
 5 import java.awt.event.InputEvent;
 6 import java.awt.event.KeyEvent;
 7 
 8 /**
 9  *     @author wangtianze QQ:864620012
10  *     @date 2017年4月16日 上午1:20:32
11  *     <p>description:Robot測試類,實現效果是運行之后鼠標自動定位到整個屏幕坐標系的(635,454)位置,輸入wangtianze</p>
12  */
13 public class RobotTest {
14     public static void main(String[] args){
15         try {
16             Robot robot = new Robot();
17             //鼠標移動到坐標(635,454)
18             RobotTest.clickMouse(robot, 635, 454, 500);
19             
20             int[] keys = {
21                     KeyEvent.VK_W,KeyEvent.VK_A,
22                     KeyEvent.VK_N,KeyEvent.VK_G,
23                     KeyEvent.VK_T,KeyEvent.VK_I,
24                     KeyEvent.VK_A,KeyEvent.VK_N,
25                     KeyEvent.VK_Z,KeyEvent.VK_E};
26             robot.delay(500);
27             RobotTest.pressKey(robot,keys,500);
28         } catch (AWTException e) {
29             // TODO Auto-generated catch block
30             e.printStackTrace();
31         }
32     }
33     
34     public static void pressKey(Robot robot,int[] keys,int delay){
35         for(int i=0;i<keys.length;i++){
36             robot.keyPress(keys[i]);
37             robot.keyRelease(keys[i]);
38             robot.delay(500);
39         }
40         //處理完需要延遲
41         robot.delay(delay);
42     }
43     
44     public static void clickMouse(Robot robot,int x,int y,int delay){
45         robot.mouseMove(x, y);
46         robot.delay(500);
47         robot.mousePress(InputEvent.BUTTON1_MASK);
48         robot.mouseRelease(InputEvent.BUTTON1_MASK);
49         robot.delay(delay);
50     }
51 }

利用Robot類實現監控屏幕,實現效果是運行后每隔50微秒獲取當前屏幕圖像,顯示到JFrame內

 1 package com.wtz.util;
 2 
 3 import java.awt.AWTException;
 4 import java.awt.Dimension;
 5 import java.awt.Graphics2D;
 6 import java.awt.Rectangle;
 7 import java.awt.RenderingHints;
 8 import java.awt.Robot;
 9 import java.awt.Toolkit;
10 import java.awt.image.BufferedImage;
11 
12 import javax.swing.ImageIcon;
13 import javax.swing.JFrame;
14 import javax.swing.JLabel;
15 
16 /**
17  *     @author wangtianze QQ:864620012
18  *     @date 2017年4月16日 下午4:43:11
19  *     <p>description:Robot實現監控屏幕,實現效果是每隔50微秒獲取當前屏幕圖像,顯示到JFrame內</p>
20  */
21 public class RobotScreenTest {
22     public static void main(String[] args){
23         try {
24             Robot robot = new Robot();
25             JFrame jframe = new JFrame();
26             //設置標題
27             jframe.setTitle("wangtianze監控屏幕工具");
28             JLabel label = new JLabel();
29             jframe.add(label);
30             jframe.setSize(800,600);
31             //設置可見
32             jframe.setVisible(true);
33             //設置置頂
34             jframe.setAlwaysOnTop(true);
35             //控制台退出模式
36             jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
37             //獲取屏幕大小
38             Toolkit toolkit = Toolkit.getDefaultToolkit();
39             Dimension dm = toolkit.getScreenSize();
40             while(true){
41                 //一個矩形面板
42                 Rectangle rec = new Rectangle(0, 0, (int)dm.getWidth(), (int)dm.getHeight());
43                 //按照矩形截取圖片到緩沖流
44                 BufferedImage img = robot.createScreenCapture(rec);
45                 //縮放圖片
46                 BufferedImage newImg = RobotScreenTest.resize(img, jframe.getWidth(), jframe.getHeight());
47                 label.setIcon(new ImageIcon(newImg));
48                 try {
49                     Thread.sleep(50);
50                 } catch (InterruptedException e) {
51                     // TODO Auto-generated catch block
52                     e.printStackTrace();
53                 }
54             }
55         } catch (AWTException e) {
56             // TODO Auto-generated catch block
57             e.printStackTrace();
58         }
59     }
60     
61     public static BufferedImage resize(BufferedImage img, int newW, int newH){
62         int w = img.getWidth();
63         int h = img.getHeight();
64         //創建一個縮放后的圖片流
65         BufferedImage newImg = new BufferedImage(newW,newH,img.getType());
66         Graphics2D g = newImg.createGraphics();
67         //設置模式
68         g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,RenderingHints.VALUE_INTERPOLATION_BILINEAR);
69         //按比例縮放
70         g.drawImage(img, 0, 0, newW, newH, 0, 0, w, h, null);
71         g.dispose();
72         return newImg;
73     }
74 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM