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

原标题: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 } }返回搜狐,查看更多

责任编辑:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java c语言 for_Java能写C语言编译器吗

用java是可以写语言编译器的,用任何语言工具写都可以。各语言开发工具间只有开发效率的差异,没有可行不可行的区别。编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指令就是CPU的指令集,当然可以…

手机 java服务器ip地址_java获取系统当前服务器IP地址

BZOJ-1008 越狱 数论快速幂1008: [HNOI2008]越狱 Time Limit: 1 Sec Memory Limit: 162 MB Submit: 6192 Solved: 2636 [Submit][Status] ...VBScript - CUD registry key and valuehttp://msdn.microsoft.com/en-us/library/aa384906(vvs.85).aspx HKEY_LOCAL_MACHINE &H…

linux定时结束java进程_使用zt-exec库定时清理linux休眠进程

在几个月前上线的一个采集项目,构架是基于java selenium chromedriver chrome实现的采集。至于为哈不直接用jsoup或httpclient实现采集功能,是因为很多被采集页面都是通过js来渲染内容的,所以必须用webdriverchrome来模拟真正的浏览器访问…

java的流传输的进度条_JAVA程序设计(17)----- 制作文件拷贝软件 进程 输入流输出流 NIO 进度条 底层拷贝 多线程...

使用NIO对文件进行底层拷贝(按照字节)多线程技术初级应用 不阻塞程序运行package com.lovo.homework01;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOu…

java 安卓调试_【转】Android 调试技术

一、JAVA层单步调试二、Native层单步调试三、JAVA层堆栈打印1. 在指定的函数内打印相关java调用 Log.d(TAG,Log.getStackTraceString(new Throwable()));2. 普通JAVA进程堆栈 ActivityManagerService.dumpStackTraces保存在系统设置dalvik.vm.stack-trace-file指定的文件data/a…

java spring4 jar包_spring jar包官方下载|

spring-web jar包是用来SSH配置的jar包 配置了监听器,还出现严重: Error configuring application listener of class org.springframework.web.context.ContextLoader就需要它,欢迎有需要的用户前来it猫扑下载!spring-web.jar作用spring-web…

java 找不到符号 con_我的java程序运行时,提示找不到符号,求解!

我的java程序运行时,提示找不到符号,求解!关注:163 答案:4 mip版解决时间 2021-02-07 23:57提问者人潮拥挤你不在2021-02-06 23:57import java.awt.*;import java.awt.event.*;import java.applet.Applet;import java.applet.AudioClip;public class M…

java字符串为空抛出异常_Java 判断字符串是否为空的四种方法,及效率比较。

以下是Java 判断字符串是否为空的四种方法:方法一: 最多人使用的一个方法, 直观, 方便, 但效率很低:if(s null ||"".equals(s));方法二: 比较字符串长度, 效率高, 是我知道的最好一个方法:if(s null || s.length() < 0);方法三: Java SE 6.0 才开始提供的方法, …

java抽组件_Java实现的基于模板的网页结构化信息精准抽取组件:HtmlExtractor

HtmlExtractor由2个子项目构成&#xff0c;html-extractor和html-extractor-web。html-extractor实现了数据抽取逻辑&#xff0c;是从节点&#xff0c;html-extractor-web提供web界面来维护抽取规则&#xff0c;是主节点。html-extractor是一个jar包&#xff0c;可通过maven引用…

mysql索引过多为什么会慢_mysql – 为什么索引使这个查询更慢?

摘要问题是由于b-trees的性质,字段不适合索引.说明假设你有一张表有500,000个掷硬币的结果,其中抛掷是1(头)或0(尾)&#xff1a;CREATE TABLE toss (id int NOT NULL AUTO_INCREMENT,result int NOT NULL DEFAULT 0,PRIMARY KEY ( id ))select result, count(*) from toss grou…

pythonweb管理电脑_Python远程控制局域网计算机网络远程控制软件Python的开发,python,电脑,web...

[Python] 纯文本查看 复制代码import web import osimport timefrom PIL import ImageGrabimport numpy as npimport cv2urls (/reboot_html/(.*), reboot_html,/jp_html/(.*), jp_html,/shutdown_html/(.*), shutdown_html,/(js|css|images)/(.*), static)app web.applicati…

ctf的php,CTF中常见的PHP漏洞

1.MD5()漏洞php在处理字符串时会利用&#xff01;&#xff0c;||&#xff0c;进行hash值的比较 他把每一个“0E’开头的哈希值都解释为0&#xff0c;因此如果两个不同的密码经过hash处理之后都是以‘0e’开头&#xff0c;那么PHP会认为两者是相同的&#xff0c;南京邮电大学一次…

php ob 缓存,php中ob函数缓冲机制深入理解

下面就php中ob函数缓冲机制通过文字说明加代码分析的形式给大家展示如下&#xff1a;对于一个刚刚入门的php程序员来说&#xff0c;php缓冲区是几乎透明的。在他们心目中&#xff0c;一个echo print_r 函数&#xff0c;数据便会‘嗖的一声飞到浏览器上&#xff0c;显示出来。我…

php极光推送教程,laravel框架使用极光推送消息操作示例

本文实例讲述了laravel框架使用极光推送消息。分享给大家供大家参考&#xff0c;具体如下&#xff1a;最近需要使用极光推送往客户端推消息&#xff0c;所以这里记录下使用过程。极光推送的服务端文档&#xff1a;https://docs.jiguang.cn/jpush/server/push/server_overview/极…

php 强制刷新,web端实现后退强制刷新功能代码

本文主要和大家介绍了微信web端后退强制刷新功能的实现代码,需要的朋友可以参考下&#xff0c;希望能帮助到大家。具体代码如下所示&#xff1a;//生成uuidvar uuidChars "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");fu…

php强制cookies,php Cookies操作类(附源码)

本cookies操作类的功能&#xff0c;包括&#xff1a;1&#xff0c;保存&#xff0c;读取&#xff0c;更新&#xff0c;清除cookies数据。2&#xff0c;可设置前缀。3&#xff0c;强制超时控制。4&#xff0c;cookies数据可以是字符串&#xff0c;数组&#xff0c;对象等。1&…

php 缩略图 失真,WORDPRESS缩略图失真变形模糊的解决方法

众所周知&#xff0c;网站最怕改版&#xff0c;其中一个主要的原因就是缩略图的问题&#xff0c;旧模板的缩略图尺寸不一定适合新版的模板缩略图尺寸要求&#xff0c;尽管后台的设置-多媒体-缩略图尺寸修改了&#xff0c;可这是新上传的图片才会生成新的尺寸的缩略图&#xff0…

php表单 提交数据,PHP表单提交数据

1.PHP表单处理PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据GET 和 POST 都创建数组(例如&#xff0c;array( key > value, key2 > value2, key3 > value3, ...))。此数组包含键/值对&#xff0c;其中的键是表单控件的名称&#xff0c;而值是来自用户的输入数据。…

binarysearch java,java数据结构之二分查找法 binarySearch的实例

java数据结构之二分查找法 binarySearch的实例折半查找法&#xff0c;前提是已经排好序的数组才可查找实例代码&#xff1a;public class BinarySearch {int[] bArr;public void setArr(int[] bArr){this.bArrbArr;}public static void main(String[] args) {int arrLength16;i…

matlab dotline,基于模糊控制的路径规划算法的仿真实现---Matlab程序.rar

【实例简介】与 本人博客中的课程论文《基于模糊控制的路径规划算法的仿真实现》相配套&#xff0c;可以相互参阅【实例截图】【核心代码】基于模糊控制的路径规划算法的仿真实现---Matlab程序├── fuzzy4│ ├── CheckIsBlocked.asv│ ├── CheckIsBlocked.m│ ├…