`
l4432848
  • 浏览: 252732 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

    }

}
分享到:
评论

相关推荐

    使用C#进行屏幕截图并自动保存到剪切板 主要用到Clipboard Graphics Rectangle Screen等

    在C#编程中,进行屏幕截图并将其保存到剪贴板是一个常见的需求,尤其是在开发桌面应用或者自动化测试中。这个过程涉及到几个关键的.NET Framework类,包括`Clipboard`, `Graphics`, `Rectangle`以及`Screen`。下面将...

    Java截屏保存系统剪切板

    Java截屏保存系统剪切板是一项实用的技术,它允许用户通过编程方式截取屏幕快照,并将该图像存储到系统剪贴板中,以便于后续的复制和粘贴操作。这项技术主要基于Java的标准版(Java SE)环境,利用了Java的AWT和...

    java截取屏幕内容并将图片复制到剪切板

    java截取屏幕内容并将图片复制到剪切板

    Java和获得剪切板内容

    通过Java代码与系统剪切板交互,可以获得剪切板内容,也可以向剪切板中添加内容

    java提取系统剪切板信息

    在Java中,可以方便地实现读取剪切板中的文本、图像等数据,以及将自定义的数据写入剪切板。 #### 二、获取剪切板文本内容 为了从系统剪切板中读取文本,我们可以使用以下方法: ```java protected static String...

    用VB将剪切板中的图片保存为JPG文件\捕获屏幕快照的程序,可制作用户手册

    本项目“用VB将剪切板中的图片保存为JPG文件”是利用VB来实现的一个实用功能,它能够捕获屏幕快照并将其保存为JPEG(JPG)格式的图像文件,这对于制作用户手册或教程文档非常有用。 首先,我们需要了解VB中的剪贴板...

    剪切板 网页操作

    例如,如果你想要将一段文本放入剪切板,你可以先打开剪切板,然后创建一个全局内存块,将文本写入该内存,再将内存块的句柄传给`SetClipboardData`函数,最后关闭剪切板。 在VC环境中,剪切板操作同样可以通过...

    ios剪切板文件与安卓剪切板java代码

    例如,调用`ClipboardUtil.copyToClipboard(this, "这是要复制的文本")`可以将文本复制到剪切板,而`ClipboardUtil.getTextFromClipboard(this)`则会返回当前剪切板中的文本。 需要注意的是,iOS和Android剪切板的...

    java 复制图片到剪切板

    以上步骤完成之后,图片就被复制到了系统剪贴板中,可以粘贴到支持图片的任何地方,如图像编辑软件或者网页中。 在Swing应用中,特别是在涉及到二维码生成的场景下,例如“qrcode_swing”所暗示的,可能需要使用`...

    C# 复制图片 剪切板

    在本案例中,我们关注的是使用C#语言实现从网页中复制图片并将其存储到剪切板,以便用户可以方便地在不同应用程序之间进行粘贴,如微信或QQ。以下是对这个主题的详细讲解: 首先,我们需要理解剪切板是什么。剪切板...

    qml图表和截图至剪切板

    在本文中,我们将深入探讨如何在Qt Quick QML中创建和操作图表,并实现将图表内容复制到剪切板的功能。QML(Qt Quick Markup Language)是Qt框架的一部分,用于构建用户界面,它允许开发者以声明式的方式定义UI元素...

    C#监控剪切板例子程序

    在IT行业中,剪切板是操作系统提供...通过这个项目,开发者可以学习到如何在C#中使用剪切板API,以及如何处理系统消息来实现特定的功能。对于想要深入学习Windows桌面应用开发的程序员来说,这是一个非常有价值的起点。

    C#获取剪切板内容

    除了文本,剪切板还可以存放图像数据。使用Clipboard类的GetImage()方法可以获取剪切板中的图像。如果剪切板中没有图像,该方法会返回null。以下代码展示了如何获取并显示剪切板中的图像: ```csharp using System....

    剪切板监控及内容修改

    这些资源可以帮助开发者理解如何使用编程语言(如C++、Python或Java)来创建剪切板监控系统,并实现内容的修改功能。通过学习和分析这些代码,我们可以掌握剪切板API的使用方法,以及如何根据需求定制剪切板监控策略...

    VC剪切板功能

    在对话框类的成员函数中,我们可以重载`OnChar()`或`OnKeyDown()`等消息处理函数,当用户输入时,把这些数据复制到剪切板。例如,当检测到`WM_COPY`或`CTRL+C`组合键时,调用`SetClipboardData()`函数将数据设置为...

    自己写的小巧的剪切板收集器

    这通常通过设置剪切板事件的回调函数实现,如`AddClipboardFormatListener`函数,当剪切板内容发生变化时,该函数会被调用,使得剪切板收集器可以及时获取并保存新的数据。 4. **数据格式处理**:由于剪切板可以...

    复制png图片到剪切板

    一般复制的是文件,这个是复制内容,复制的文件不能直接复制到剪切板,我这个可以

    易语言从剪切板取图片

    用于保存从剪切板获取的位图句柄 .局部 "hWnd", "handle" ; 窗口句柄 .局部 "hDC", "handle" ; 设备上下文句柄 .局部 "hOldBitmap", "handle" ; 旧的位图句柄 ; 打开剪切板 OpenClipboard(0) ; 检查剪贴板是否有...

    详解微信小程序之一键复制到剪切板

    这个功能可以让用户直接将小程序中的某些信息复制到手机或电脑的剪切板上,比如复制文本、链接等信息。本文将详细介绍微信小程序中实现一键复制到剪切板的方法,并通过示例代码进行说明。 微信小程序提供了一个API ...

    剪切板拓展功能

    剪切板拓展功能的实现原理通常是通过系统钩子(System Hooks)或者API监控来捕获复制和剪切事件,然后将这些信息保存到本地数据库或者云存储。为了保护用户的隐私,这些工具通常会设置数据保护机制,比如加密存储,...

Global site tag (gtag.js) - Google Analytics