Java---屏幕捕获工具    
package test;

  import java.awt.AWTException;

  import java.awt.Dimension;

  import java.awt.Image;

  import java.awt.Rectangle;

  import java.awt.Robot;

  import java.awt.Toolkit;

  import java.awt.event.ActionEvent;

  import java.awt.event.ActionListener;

  import java.awt.event.InputEvent;

  import java.awt.event.KeyEvent;

  import java.awt.image.BufferedImage;

  import java.io.File;

  import java.io.FileOutputStream;

  import javax.swing.ImageIcon;

  import javax.swing.JButton;

  import javax.swing.JFileChooser;

  import javax.swing.JFrame;

  import javax.swing.JLabel;

  import javax.swing.JMenu;

  import javax.swing.JMenuBar;

  import javax.swing.JMenuItem;

  import javax.swing.KeyStroke;

  import com.sun.image.codec.jpeg.JPEGCodec;

  import com.sun.image.codec.jpeg.JPEGImageEncoder;public class image_test {

  Image image;

  JLabel label;

  JFrame frame;

  JFileChooser fileChooser=new JFileChooser();

  JPEGImageEncoder encoder;

  JMenuItem item2;   //保存

  JMenuItem item3;   //清空

  JMenuItem item4;   //退出

  public image_test(){

  iniframe();

  }

  private void iniframe() {

  frame=new JFrame("截屏");

  frame.setBounds(200,200,500,400);

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.setVisible(true);

  JMenuBar menubar=new JMenuBar();

  JMenu menu=new JMenu("截屏");

  JMenuItem item1=new JMenuItem("开始截屏");

  item1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.SHIFT_MASK|InputEvent.CTRL_MASK));

  item2=new JMenuItem("保存");

  item2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));

  item3=new JMenuItem("清空");

  item3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.SHIFT_MASK|InputEvent.CTRL_MASK));

  item4=new JMenuItem("退出");

  item4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

  item2.setEnabled(false);

  item3.setEnabled(false);

  menu.add(item1);

  menu.add(item2);

  menu.add(item3);

  menu.add(item4);

  menubar.add(menu);

  frame.setJMenuBar(menubar);

  label=new JLabel();

  item1.addActionListener(new ActionListener(){

  public void actionPerformed(ActionEvent e) {

  Capture(e);

  }

  });

  item2.addActionListener(new ActionListener(){

  public void actionPerformed(ActionEvent e) {

  Save(e);

  }

  });

  item3.addActionListener(new ActionListener(){

  public void actionPerformed(ActionEvent e) {

  Clear(e);

  }

  });

  item4.addActionListener(new ActionListener(){

  public void actionPerformed(ActionEvent e) {

  Exit(e);

  }

  });

  frame.add(label);

  }

  public void Capture (ActionEvent e){

  image=this.createImage();

  label.setIcon(new ImageIcon(image));

  item2.setEnabled(true);

  item3.setEnabled(true);

  }public void Save (ActionEvent e){

  try

  {

  int saved=fileChooser.showSaveDialog(item2);

  if(saved==JFileChooser.APPROVE_OPTION)

  {

  //获取要设置的文件名(包括路径)

  File saveFileName=fileChooser.getSelectedFile();

  //获取要保存文件的名字

  String fileName=new String(saveFileName.getPath()+".jpg");

  //1.首先创建一个输出流

  FileOutputStream fileOutPut=new FileOutputStream(fileName);

  //2.然后把输出流用JPEG编码器进行包裹,其实就是把输出流连接到编码器

  encoder=JPEGCodec.createJPEGEncoder(fileOutPut);

  //把BufferedImage对象进行编码

  encoder.encode((BufferedImage)this.createImage());

  fileOutPut.flush();

  fileOutPut.close();

  }

  }

  catch(Exception ea){

  ea.printStackTrace();

  }

  }

  public void Clear (ActionEvent e){

  label.setIcon(null);

  item2.setEnabled(false);

  item3.setEnabled(false);

  }

  public void Exit (ActionEvent e){

  System.exit(0);

  }

  private Image createImage() {

  try {//截图代码开始

  Image tempLocalImage=null;

  Robot robot=new Robot();

  Dimension dimension= Toolkit.getDefaultToolkit().getScreenSize();

  Rectangle scrRect=new Rectangle(0,0,dimension.width,dimension.height);

  tempLocalImage=robot.createScreenCapture(scrRect);

  //截图代码结束

  return tempLocalImage;

  } catch (AWTException ex) {

  ex.printStackTrace();

  }

  return null;}

  public static void main(String[] args) {

  new image_test();

  }

  }

关联文档