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();
}
}