原标题:Java制作屏幕截图软件(还可以保存到剪切板内)

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 是按钮按下的一个事件publicclassActionJFrameextendsJFrameimplementsActionListener{ // 构造器 我们需要在构造器内初始化按钮publicActionJFrame(){ // 这个就是按钮 JButton jb = new JButton("截图"); jb.addActionListener(this);// 把时间注册到按钮上 如果不注册的话就不可以触发 把事件和按钮关联起来this.add(jb);// 把按钮添加到窗口之中this.setSize(100, 60); this.setAlwaysOnTop(true);// 窗口在所有窗口之上this.setVisible(true);// 显示窗口 } publicstaticvoidmain(String[] args){ new ActionJFrame(); } publicvoidactionPerformed(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 凯哥 * *///显示照片publicclassImageJFrameextendsJFrameimplementsjava.awt.event.MouseListener{ BufferedImage image = null; publicImageJFrame(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 进行绘画 } // 窗口绘画方法publicvoidpaint(Graphics g){ super.paint(g); g.drawImage(image, 0, 0, new ImageObserver() { publicbooleanimageUpdate(Image img, int infoflags, int x, int y, int width, int height){ // TODO Auto-generated method stubreturnfalse; } }); g.drawRect(x, y, w, h); } int x, y; int w, h; boolean b = false; publicvoidmousePressed(MouseEvent e){ // 按下if (b == false) { x = e.getX(); y = e.getY(); } } publicvoidmouseReleased(MouseEvent e){ // 弹起if (b == false) { w = e.getX() - x; h = e.getY() - y; this.repaint(); b = true; } } @OverridepublicvoidmouseClicked(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() { returnnew DataFlavor[] { DataFlavor.imageFlavor }; } publicbooleanisDataFlavorSupported(DataFlavor flavor){ return DataFlavor.imageFlavor.equals(flavor); } public Object getTransferData(DataFlavor flavor)throws UnsupportedFlavorException, IOException { if (isDataFlavorSupported(flavor)) return image; thrownewUnsupportedFlavorException(flavor); } }; Toolkit.getDefaultToolkit().getSystemClipboard() .setContents(trans, null); System.exit(0);// 关闭你的软件 } catch (Exception e2) { // TODO: handle exception } } } @OverridepublicvoidmouseEntered(MouseEvent e){ // TODO Auto-generated method stub } @OverridepublicvoidmouseExited(MouseEvent e){ // TODO Auto-generated method stub } }返回搜狐,查看更多

责任编辑:

用java做一个截图工具_Java制作屏幕截图软件(还可以保存到剪切板内)相关推荐

  1. Java制作屏幕截图软件(还可以保存到剪切板内)

    2019独角兽企业重金招聘Python工程师标准>>> package com.kaige123;import java.awt.Rectangle;import java.awt. ...

  2. java做一个日历程序_java实现的一个简单日历

    先贴代码,之后的文章慢慢总结分析. 首先是日历的每个格子作为一个对象,建立的一个类DayBox.java import java.awt.Color; import javax.swing.JButt ...

  3. 仿照java做一个脚本语言_java调用其它语言脚本(python、js)

    1.背景 之前用开发过程一些功能如图像处理.相似度计算.水印等需要调用算法写的方法,但是算法一般都是用python语言进行开发.所以经常直接用java调用python脚本文件.在网上搜了很多方法也排了 ...

  4. java做微信开发工具_Java微信公众平台开发(14) 微信web开发者工具使用

    为帮助开发者更方便.更安全地开发和调试基于微信的网页,微信推出了 web 开发者工具.它是一个桌面应用,通过模拟微信客户端的表现,使得开发者可以使用这个工具方便地在 PC 或者 Mac 上进行开发和调 ...

  5. 用Java做一个跳一跳辅助

    用Java做一个跳一跳辅助 Java跳一跳辅助 首先..让大家看下效果: 由于是闲着没事写的.也懒得看OpenCV的API了. 要用到的工具如下: adb+jdk 把adb添加到环境变量里就行.很简单 ...

  6. 如何复制java卡,使用java做一个简单的集卡程序

    使用java做一个简单的集卡程序 本次设想的是要集齐4张卡,每张卡的概率都是25%,如果每个用户集齐需要多少次才能集合完毕 public class Test { public static void ...

  7. java mysql点赞功能_用Java做一个类似于微博QQ空间点赞的功能-Fun言

    点赞是一个互动性很强的功能,网站加入点赞可以增强用户之间的亲密度,可以利用点赞排出受欢迎文章或者其他的列表,所以今天教大家如何做一个类似于微博.QQ空间的点赞功能 需求分析: 首先要明确这个功能是需要 ...

  8. C# WPF使用CefSharp客户端内嵌浏览器做一个开小差工具

    前言 CefSharp是一个C#客户端内嵌入chromium开源项目浏览器的工具,方便在客户端中自然的访问网页内容,十分好用.当然,网上有很多使用CefSharp的教程了,怎么使用都很详尽.我这里只是 ...

  9. 自己创造一个截图工具?一行字母就行

    不管你是一个电脑小白,还是一个编程高手,只要一行字母就可以写出一个截图工具,你信吗?首先,先想想你是如何截图的,是这样吗: 这未免也太草率了,这里有一种极简方式,是你的截图方式瞬间"高大上& ...

最新文章

  1. boost::mp11::mp_remove_if相关用法的测试程序
  2. Silverlight实用窍门系列:51.Silverlight页面控件的放大缩小、Silverlight和Html控件的互相操作...
  3. html设置百度协议,网站HTML结构SEO要求说明(含移动站)
  4. tab标签的另一种写法
  5. linux ntfs 新建,Linux在NTFS中创建的文件的权限
  6. 【转】医学图像之DICOM格式解析
  7. rsync配置和使用
  8. 免责协议怎么写_员工辞职时,HR得让他这样写离职申请!
  9. suse linux系统备份,suse linux enterprise server 11 sp3 版克隆安装ebs r12.1.3注意事项
  10. IBM 发布企业级社交协作平台 Domino V10,开启快速应用程序开发的新时代
  11. 成熟有家男人与24岁女孩的精彩对白[推荐]
  12. oracle断电ora-01033,ora-00600,
  13. OA软件办公用品分类设置,实现办公用品分类透明化
  14. 1、vinc = vict 胜、征服
  15. 共轭先验分布及其应用
  16. itext linux 中文乱码_itext linux 中文
  17. 20行Python代码爬取LOL全英雄皮肤图片
  18. mysql数据库表示创建表的关键字的是_创建数据表时,使用( )关键字表示创建临时表。_学小易找答案...
  19. 如何做一个根据自己的需求做一个完美的商品详情页?
  20. html 导航栏设计,在网页中设计导航菜单的三个原则(附案例)

热门文章

  1. windows7 安装MySQL 解决报错 服务没有响应控制功能
  2. Android之shape属性详解
  3. ActiveMQ消费者平滑关闭
  4. 个别学生计算机辅导计划,网络学院计算机基础统考辅导计划.doc
  5. java ee ide 添加spring,如何在Eclipse IDE项目文件夹中为spring添加jar文件
  6. 浮点数在计算机中起什么作用,浮点数在计算机中的存储表示
  7. 2020,再见;2021,我来了!
  8. JAVA进阶教学之(Object类的toString方法)
  9. JAVA入门级教学之(第一章总结)
  10. 堆排序时间复杂度_图解堆结构、堆排序及堆的应用