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 是按钮按下的一个事件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    }

}
时间: 2024-08-10 21:13:21

Java制作屏幕截图软件(还可以保存到剪切板内)的相关文章

java利用剪切板的作弊工具

目录 背景及效果 代码思路 源码 难点讲解 装逼时刻 背景及效果 考试又考试,考试何其多 天天为考试,万事成蹉跎 学子皆被分数累,春去秋来没快乐 朝闻老师吼,暮闻家长火 一生考试苦几何,请君听我考试歌 暑假前有个同学要上机考日语,然而对于他这种连书的目录都没看过的人,考试,呵呵. 于是我就搞出了这个小工具.一般上机考试都是会提前发题库的,他只需要在考试的时候把题库复制到考试电脑上一份,把程序打成包,双击后台运行就好了.效果就是复制题目,然后粘贴直接出答案. 代码思路 复制的内容会存放到电脑剪切板

APICloud在线制作app软件,让app价格降下来!

视线水平向下45度,拇指轻轻滑动,这是我们每天都要重复的动作.手机屏幕上的信息洪流早已将"不出户,知天下"变为现实,也把我们彻底带进大众创业.万众创新的"互联网+"经济时代.只是与我们仅仅一屏之隔的众多APP却因其高昂的开发成本,让很多人望而却步.专业的生产线,在线制作app软件把APP价格降下来,成了时代的课题.在此背景下,APIcloud在线制作app软件,一个APP在线制作平台,应运而生. 20世纪初,汽车只是是富人们才能消费得起的奢侈品(正如刚开始时的APP

Java制作最难练手速游戏,Faker都坚持不了一分钟

想练手速,来啊,互相伤害啊 Java制作最难练手速游戏,目测Faker也坚持不了一分钟 制作思路:只靠Java实现.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java.Java. 字母模型应该是整个游戏的主角,因为整个游戏过程中都涉及到它的运动,比如坠落,消失,产生等,首先应该考虑字母随即出现的位置,在游戏中不断下落,计算下落的高

制作app软件要多少钱

很多用户打电话过来开口问的第一个问题就是我想制作app软件要多少钱呢,对于金华腾云科技来说每天都会有用户重复的问制作app软件要多少钱,现在app开发已经成为一种普遍现象,就每天遇到用户问的问题“制作app软件要多少钱”,金华腾云科技的产品经理就和你一起分析一下app开发都有哪些费用: 手机app制作需求现状分析: 目前很多用户都不知道自己开发app的需求,问题都集中在我想制作app软件要多少钱?他们第一时间想了解的是价格问题,对一个app开发流程以及为什么要开发app没有概念,用户对自己要开发

目前网络上大部分的网站都是由ASP或PHP开发,并且java平台的软件购买成本不适合中小企业客户,一般适用于银行、国家安全等行业领域

目前网络上大部分的网站都是由ASP或PHP开发,并且java平台的软件购买成本不适合中小企业客户,一般适用于银行.国家安全等行业领域. 要求建设开发大型复杂的网站,但仅有一个idea,不能够提供网站详细要求的客户.大型网站的建设开发的过程,是一个严谨的有详细规范的逻辑流程,必须要形成文字(文档)形式的网站建设需求,炎帝科技才能够在网站设计/网站开发的过程中控制网站建设项目质量,顺利成功完成.此类最典型的客户口头禅就是“我要做一个类似facebook的网站”,“我要做淘宝那样的网站”,此类客户自己

12.JAVA之GUI编程打开与保存文件

功能:java图形用户界面开发,练习打开保存文件 代码如下: import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListen

C#WPF 语音开发教程 源代码下载 csdn tts(text to sound) 一步一步 教你制作语音软件 附图和源代码

C#WPF  语音开发教程  一步一步 教你制作语音软件 附图和源代码 效果展示 一 项目准备 1.vs2012开发平台 2.微软的语音软件库 下载:http://download.csdn.net/detail/wyx100/8431269 (含实例项目源代码) 二.开发目标 制作一个语音软件,可以朗读文字: 多个语音库:男音和女音.支持英文和中文朗读: 支持选择播放设备 支持朗读语速选择 支持音量选择 三 开发过程 1.新建WpfSpeechDemo工程 文件(vs开发平台左上角)----新

Java制作二维码代码,中间带logo图片,可设置logo大小

public static int createQRCode(String content, String imgPath,String logo) { try { Qrcode qrcodeHandler = new Qrcode(); qrcodeHandler.setQrcodeErrorCorrect('M'); qrcodeHandler.setQrcodeEncodeMode('B'); qrcodeHandler.setQrcodeVersion(7); // System.out

win7+64位+Java学习基本软件安装+环境配置+eclipse(IDE)

一.下载安装JDK 1.安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html 根据需要进行下载,我的电脑是win7+64位,所以选择版本:jdk-9.0.1_windows-x64_bin.exe 2.双击安装包 ,点击下一步,建议不要装在C盘,我一般习惯性将所有软件装在E盘下面,首先是安装JDK: 3.继续点击下一步,安装完jdk-9.0.1,会自动安装jre-9.