发布日期:2013-12-14 10:01 来源: 标签: Java 捕获 屏幕 图像
Java捕获当前屏幕图像
     Java捕获当前屏幕图像
import java.awt.*; 
import java.awt.image.*; 
import com.sun.image.codec.jpeg.*; 
class ImageCanvas extends Canvas{ 
private Image image; 
private Dimension prefSize; 
public ImageCanvas(Image image){ 
this.image = image; 
calculatePreferredSize(); 

public void setImage(Image image){ 
this.image = image; 
calculatePreferredSize(); 
repaint(); 

private void calculatePreferredSize(){ 
prefSize = new Dimension(image.getWidth(this),image.getHeight(this)); 
System.out.println(image.getWidth(this)); 
setSize(prefSize); 

public Dimension getPreferredSize() { 
return prefSize; 

public Dimension getMinimumSize() { 
return prefSize; 

public void update(Graphics g){ 
paint(g); 

public void paint(Graphics g){ 
g.drawImage(image,0,0,null); 


class ImageUtils{ 
public static Image getScreenImage(){ 
Robot robot; 
try { 
robot = new Robot(); 
}catch(Exception e) { 
throw new RuntimeException("unable to construct Robot"); 

Dimension screenDims =Toolkit.getDefaultToolkit().getScreenSize(); 
Image screen =robot.createScreenCapture(new Rectangle(450,350,screenDims.width,screenDims.height)).getScaledInstance(400,300,Image.SCALE_SMOOTH); 
MediaTracker tracker =new MediaTracker(new Label()); 
tracker.addImage(screen,1); 
try { 
tracker.waitForID(0); 
}catch(InterruptedException e) { /** ... */ } 
return screen; 


public class ScreenCapture extends Frame{ 
private ImageCanvas canvas =new ImageCanvas(ImageUtils.getScreenImage()); 
public ScreenCapture(){ 
add(canvas); 
setSize(400,300); 
setVisible(true); 
Thread imageThread =new UpdateThread(); 
imageThread.setDaemon(true); 
imageThread.start(); 

class UpdateThread extends Thread{ 
public void run(){ 
while(true){ 
try { 
Thread.currentThread().sleep(1000); 

catch (Exception ex) { 

canvas.setImage(ImageUtils.getScreenImage()); 
validate(); 



public static void main(String[] args){ 
new ScreenCapture(); 

}  

相关评论

专题信息
    本教程的主要讲解java语言的核心基础知识,使读者能有个良好的语言基础,为以后进一步提高打下基础。宗旨是帮助更多想学习java的朋友快速入门,如果你是一个Java语言的初学者,那么就从Java教程,java数组,java环境变量配置,java网络编程,技巧等这里开始学习Java吧!