Java实现截图小工具的完整代码

目录
  • 写在前面
  • 效果展示
  • 代码展示
  • 项目结构
  • 设计思路
  • 项目测试

写在前面

今天利用Java的图形用户界面GUI技术写了一个电脑截图小工具。本程序代码简单,涉及到异常处理事件处理图形用户界面等,是初学者练手的好项目。一起来学习吧!

效果展示

代码展示

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
public class PrintScreen extends JFrame{
    PrintScreen(){
        this.setTitle("Java屏幕截图小工具");
        this.setSize(400,300);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        JButton jButton=new JButton("点击截图");
        jButton.setSize(120,60);
        setLayout(new FlowLayout());
        getContentPane().add(jButton);
        //为按钮添加监听事件
        jButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    PrintScreen();
                } catch (AWTException | IOException ex) {
                    throw new RuntimeException(ex);
                }
            }
        });
    }

	//实现截图功能
    public static void PrintScreen() throws AWTException, IOException {
        Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
        int width=(int)screenSize.getWidth();
        int height=(int)screenSize.getHeight();
        Robot robot=new Robot();
        BufferedImage bi=robot.createScreenCapture(new Rectangle(width,height));
        ImageIO.write(bi,"png",new File("C:\\Users\\Administrator\\Desktop","上一张截图.png"));
    }
    public static void main(String[] args){
        PrintScreen printScreen=new PrintScreen();
    }
}

项目结构

本程序用于初学者学习,结构简单,所有功能在主类中实现。

设计思路

首先绘制窗口,添加按钮组件,然后为按钮添加监听事件,实现截图功能。新的截图放在桌面,并命名为上一张截图.png。此路径可以根据自己的需求更改。

本程序中异常处理和事件处理是重点,也是Java进阶学习的重要部分,虽然GUI现在并没有很大的市场,甚至很多Java初学者放弃学习GUI技术,但是利用GUI编程的过程对于培养编程兴趣,深入理解Java编程有很大的作用。

本程序还可以进行优化,用于截取不同形状的截图,满足用户的需求。通过添加坐标变量来截取屏幕上所需要的像素点。同时,还可以对这个简易的窗口进行美化。本程序是一个学习Java编程的练手好项目。

项目测试

运行程序,点击截图按钮,在目标文件路径下生成一个命名为“上一张截图.png”的文件,如上图。

到此这篇关于Java实现截图小工具的完整代码的文章就介绍到这了,更多相关java截图小工具内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java使用ffmpeg实现上传视频的转码提取视频的截图等功能(代码操作)

    ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用.ffmpeg能解析的格式和不能解析的格式都一一给大家说明了,具体内容详情跟随一起看看吧, 1.能支持的格式 ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 2.不能支持的格式 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(menco

  • java利用phantomjs进行截图实例教程

    前言 最近工作中遇到一个需求,需要实现截图功能,断断续续查找资料.验证不同的实现方法终于算基本搞定了页面截图,因为中间过程曲折花费较多时间,分享出来帮助大家快速实现截图 为什么选用phantomjs进行截图 截图可以实现的方式有很多,比如: selenium HtmlUnit Html2Image...and so on但是这些实现的截图效果都不好.selenium只能实现截屏,不能截取整个页面,而HtmlUnit.Html2Image对js的支持效果并不好,截下来的图会有很多空白.phanto

  • Java selenium截图操作的实现

    方法一:Selenium中截图类TakeScreenshout,这个类主要是获取浏览器窗体内的内容,不包括浏览器的菜单和桌面的任务栏区域,我们用百度首页来截图,看看截图效果. FileUtils.copyFile(srcFile, new File("屏幕截图", time + ".png"));"屏幕截图"是我们自己创建的文件夹用来存放截图文件,此文件夹在project(工程)的更目录 : 当然也是可以设置保存到其他目录下:FileUtils.

  • Java获取视频时长及截取帧截图详解

    前言 只是最近碰到有这方面的项目需求,所以简单 Mark 下本文.下面的示例是参考过他人分享的文章,之后本人再自行实践.调整和测试过的,希望对有这方面需求的人有所帮助. 示例 添加依赖 <dependency> <groupId>org.bytedeco</groupId> <artifactId>javacv-platform</artifactId> <version>1.4.4</version> </depe

  • java实现摄像头截图功能

    本文为大家分享了java摄像头截图的具体代码,供大家参考,具体内容如下 本来sun有个jmf组件可以很方便的实现摄像头截图的,不过这版本后来停止更新了,当前官网最新版本为Java Media Framework (JMF) 2.1.1e,下载回来,在windows 7 32位上使用,居然不能运行,网上另外找了个jmf的替代框架fmj使用,截图实现代码: package com.pengo.capture; import java.awt.BorderLayout; import java.awt

  • Java实现截图小工具的完整代码

    目录 写在前面 效果展示 代码展示 项目结构 设计思路 项目测试 写在前面 今天利用Java的图形用户界面GUI技术写了一个电脑截图小工具.本程序代码简单,涉及到异常处理,事件处理,图形用户界面等,是初学者练手的好项目.一起来学习吧! 效果展示 代码展示 import javax.imageio.ImageIO; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.

  • Java汉字转拼音工具类完整代码实例

    添加依赖 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> <version>2.5.1</version> </dependency> 工具类代码: public class PinYinUtils { public static HanyuPinyinOutputFormat PINYIN_FORMA

  • Java实现生成Excel树形表头完整代码示例

    本文主要分享了Java实现生成Excel树形表头完整代码示例,没有什么好解释的,直接看看代码过程. 源数据格式: String[] targetNames = { "指标名称", "单位", "xx_yy1", "xx_yy2_zz1", "xx_yy2_zz2", "2017年5月_主营业务收入_累计", "2017年5月_主营业务收入_同比", "201

  • Java网络编程之TCP通信完整代码示例

    一.概述 Socket类是Java执行客户端TCP操作的基础类,这个类本身使用代码通过主机操作系统的本地TCP栈进行通信.Socket类的方法会建立和销毁连接,设置各种Socket选项. ServerSocket类是Java执行服务器端操作的基础类,该类运行于服务器,监听入站TCP连接,每个socket服务器监听服务器的某个端口,当远程主机的客户端尝试连接此端口时,服务器就被唤醒,并返回一个表示两台主机之间socket的正常Socket对象. 二.什么是TCP? TCP是一种面向连接的.可靠的.

  • c语言中十进制转二进制显示小工具的实现代码

    计算器在显示二进制位数时候,如果开头是0.是不会显示的,对于在单片机混的人,这个有时候很麻烦,所以写个小工具. 功能就是输入十进制数字,然后显示出2进制,每显示4位一次空格,可以调整位数范围(8的倍数) 如果有谁能知道linux下类似win7的那个计算器,麻烦回复告知一下吧.很是感谢~ 例如: $ dec2bin 1 135Num 8 Binary is : 0B1000 0111done!=============================== $ dec2bin 2 135Num 16

  • java身份证合法性校验工具类实例代码

    1.身份证规则 计算方法(来源百度) 将前面的身份证号码17位数分别乘以不同的系数.从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2. 将这17位数字和系数相乘的结果相加. 用加出来和除以11,看余数是多少? 余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字.其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2.(即余数0对应1,余数1对应0,余数2对应X-) 通过上面得知如果余数是3,就会在身份

  • Java实现的汉语拼音工具类完整实例

    本文实例讲述了Java实现的汉语拼音工具类.分享给大家供大家参考,具体如下: package test; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.piny

  • Java实现的zip工具类完整实例

    本文实例讲述了Java实现的zip工具类.分享给大家供大家参考,具体如下: 实现把zip解压到指定路径,把文件夹压缩到zip,把文件列表压缩为zip的三个方法 import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;

  • Java+Swing实现医院管理系统的完整代码

    一.系统介绍 本系统实现的以下功能 管理员功能:登录系统.病人信息的增删改查.就医档案的录入.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 医生功能:登录系统.病人信息的增删改查.医生信息的增删改查.科室信息的增删改查.收费统计功能.修改密码. 收费员功能:价格管理.收费管理.修改密码. JDK版本:1.8 数据库:Mysql8.0.13 数据库用到的表 cashier charge department doctor drugtable manager medical_re

  • Java实现一个顺序表的完整代码

    实现一个顺序表 接口实现 定义一个MyArrayList类,在类中实现以下函数 public class MyArrayList { } 数组的定义 public int[] elem;//定义一个整形数组 public int usize;//usize表示数组的长度 public MyArrayList(){ this.elem = new int[5]; } 打印顺序表 for循环打印顺序表的每一位 public void display(){ for (int i = 0; i < th

随机推荐