java截屏*运行后将当前屏幕截取,并最大化显示。*拖拽鼠标,选择自己需要的部分。*按Esc键保存图片到桌面,并退出程序。*点击右上角(没有可见的按钮),退出程序,不保存图片。importjava.awt.AWTException;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Graphics;importjava.awt.GraphicsDevice;importjava.awt.GraphicsEnvironment;importjava.awt.Rectangle;importjava.awt.Robot;importjava.awt.Toolkit;importjava.awt.event.KeyAdapter;importjava.awt.event.KeyEvent;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.awt.event.MouseMotionAdapter;importjava.awt.image.BufferedImage;importjava.awt.image.RescaleOp;importjava.io.File;importjava.io.IOException;importjava.text.SimpleDateFormat;importjava.util.Date;importjavax.imageio.ImageIO;importjavax.swing.JFrame;importjavax.swing.filechooser.FileSystemView;/*** java截屏
* 运行后将当前屏幕截取,并最大化显示。
* 拖拽鼠标,选择自己需要的部分。
* 按Esc键保存图片到桌面,并退出程序。
* 点击右上角(没有可见的按钮),退出程序,不保存图片。
*
*@authorJinCeon*/
public classSnapshotTest {public static voidmain(String[] args) {//全屏运行
RectD rd = newRectD();
GraphicsDevice gd=GraphicsEnvironment.getLocalGraphicsEnvironment()
.getDefaultScreenDevice();
gd.setFullScreenWindow(rd);
}
}class RectD extendsJFrame {private static final long serialVersionUID = 1L;intorgx, orgy, endx, endy;
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
BufferedImage image;
BufferedImage tempImage;
BufferedImage saveImage;
Graphics g;
@Overridepublic voidpaint(Graphics g) {
RescaleOp ro= new RescaleOp(0.8f, 0, null);
tempImage= ro.filter(image, null);
g.drawImage(tempImage,0, 0, this);
}publicRectD() {
snapshot();
setVisible(true);//setSize(d);//最大化窗口
setDefaultCloseOperation(EXIT_ON_CLOSE);this.addMouseListener(newMouseAdapter() {public voidmousePressed(MouseEvent e) {
orgx=e.getX();
orgy=e.getY();
}
});this.addMouseMotionListener(newMouseMotionAdapter() {public voidmouseDragged(MouseEvent e) {
endx=e.getX();
endy=e.getY();
g=getGraphics();
g.drawImage(tempImage,0, 0, RectD.this);int x =Math.min(orgx, endx);int y =Math.min(orgy, endy);int width = Math.abs(endx - orgx)+1;int height = Math.abs(endy - orgy)+1;//加上1,防止width或height为0
g.setColor(Color.BLUE);
g.drawRect(x-1, y-1, width+1, height+1);//减1,加1都是为了防止图片将矩形框覆盖掉
saveImage =image.getSubimage(x, y, width, height);
g.drawImage(saveImage, x, y, RectD.this);
}
});this.addKeyListener(newKeyAdapter() {
@Overridepublic voidkeyReleased(KeyEvent e) {//按Esc键退出
if (e.getKeyCode() == 27) {
saveToFile();
System.exit(0);
}
}
});
}public voidsaveToFile() {
SimpleDateFormat sdf= new SimpleDateFormat("yyyymmddHHmmss");
String name= sdf.format(newDate());
File path=FileSystemView.getFileSystemView().getHomeDirectory();
String format= "jpg";
File f= new File(path + File.separator + name + "." +format);try{
ImageIO.write(saveImage, format, f);
}catch(IOException e) {
e.printStackTrace();
}
}public voidsnapshot() {try{
Robot robot= newRobot();
Dimension d=Toolkit.getDefaultToolkit().getScreenSize();
image= robot.createScreenCapture(new Rectangle(0, 0, d.width,
d.height));
}catch(AWTException e) {
e.printStackTrace();
}
}
}