|
package com.kaige123;
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.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
* 屏幕截图页面
*
* @author 凯哥
*
*/
//屏幕截图的开始窗口 此窗口中会有一个按钮 点击按钮就可以截图 ActionListener 是按钮按下的一个事件
public class ActionJFrame extends JFrame implements ActionListener {
// 构造器 我们需要在构造器内初始化按钮
public ActionJFrame() {
// 这个就是按钮
JButton jb = new JButton("截图");
jb.addActionListener(this);// 把时间注册到按钮上 如果不注册的话就不可以触发 把事件和按钮关联起来
this.add(jb);// 把按钮添加到窗口之中
this.setSize(100, 60);
this.setAlwaysOnTop(true);// 窗口在所有窗口之上
this.setVisible(true);// 显示窗口
}
public static void main(String[] args) {
new ActionJFrame();
}
public void actionPerformed(ActionEvent e) {
this.setVisible(false);// 窗口隐藏起来
// 开始截图
// java.awt
try {
Thread.sleep(100);//停顿一下
// 机器人 控制鼠标 控制键盘 屏幕截图
Robot r = new Robot();
Toolkit t = Toolkit.getDefaultToolkit();
// 获得屏幕的高 屏幕宽
int width = t.getScreenSize().width;
int height = t.getScreenSize().height;
// 开始截图 参数必须告诉人家 截图多大
BufferedImage image = r.createScreenCapture(new Rectangle(width,
height));
// BufferedImage 缓存在内存之中的 照片
//把缓存中的照片保存到磁盘的 a.jpg中
//ImageIO.write(image, "jpeg", new File("c:/a.jpg"));
new ImageJFrame(image);
} catch (Exception e2) {
}
}
}
package com.kaige123;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.MouseEvent;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.io.IOException;
import javax.swing.JFrame;
/**
* 显示截图照片
* 然后进行保存
* @author 凯哥
*
*/
//显示照片
public class ImageJFrame extends JFrame implements java.awt.event.MouseListener {
BufferedImage image = null;
public ImageJFrame(BufferedImage image) {
this.image = image;// 把传递进来的对象保存到属性上
Toolkit t = Toolkit.getDefaultToolkit();
// 获得屏幕的高 屏幕宽
int width = t.getScreenSize().width;
int height = t.getScreenSize().height;
this.setSize(width, height);// 设置窗口的大小
this.addMouseListener(this);
this.setUndecorated(true);// 去掉窗口的边框
this.setVisible(true);// 窗口一旦显示 就开始调用 paint 进行绘画
}
// 窗口绘画方法
public void paint(Graphics g) {
super.paint(g);
g.drawImage(image, 0, 0, new ImageObserver() {
public boolean imageUpdate(Image img, int infoflags, int x, int y,
int width, int height) {
// TODO Auto-generated method stub
return false;
}
});
g.drawRect(x, y, w, h);
}
int x, y;
int w, h;
boolean b = false;
public void mousePressed(MouseEvent e) { // 按下
if (b == false) {
x = e.getX();
y = e.getY();
}
}
public void mouseReleased(MouseEvent e) { // 弹起
if (b == false) {
w = e.getX() - x;
h = e.getY() - y;
this.repaint();
b = true;
}
}
@Override
public void mouseClicked(MouseEvent e) {
if (b && e.getClickCount() == 2) {// 你的鼠标有没有双击
try {
// 把截图好的照片保存起来
Robot r = new Robot();
final BufferedImage image = r
.createScreenCapture(new Rectangle(x + 1, y + 1, w - 1,
h - 1));
// ImageIO.write(image, "jpeg", new File("c:/a.jpg"));
Transferable trans = new Transferable() {
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { DataFlavor.imageFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
if (isDataFlavorSupported(flavor))
return image;
throw new UnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard()
.setContents(trans, null);
System.exit(0);// 关闭你的软件
} catch (Exception e2) {
// TODO: handle exception
}
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
} |
|