直接上代码,具体看注释:
package robot; import java.awt.AWTException; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.util.concurrent.TimeUnit; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class TestRotbot { public static void main(String[] args) throws FileNotFoundException { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); JFrame showImage = new JFrame("屏幕共享"); showImage.setBounds(0, 0, 300, 300); JLabel imageLabel = new JLabel(); //用于接收屏幕 showImage.setVisible(true); showImage.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); int height = (int)screenSize.getHeight(); int width = (int)screenSize.getWidth(); try { Robot robot = new Robot(); imageLabel.setBounds(0, 0, showImage.getWidth(), showImage.getHeight()); Rectangle screenRect = new Rectangle(0, 0, width, height); while(true){ BufferedImage imageW = robot.createScreenCapture(screenRect); showImage.add(imageLabel); imageLabel.setIcon(new ImageIcon(imageW)); //获取屏幕内容 TimeUnit.MILLISECONDS.sleep(50); imageW.flush(); } } catch (AWTException e) { // TODO Auto-generated catch block e.printStackTrace(); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
本文代码只做原理演示,具体的屏幕分享仍需进一步的完善,需要客户端和服务器端共同完成。