ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:95.45KB ,
资源ID:1687308      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1687308.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实现屏幕截图的小程序java课程设计.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实现屏幕截图的小程序java课程设计.docx

1、实现屏幕截图的小程序java课程设计 经济与管理学院信息管理与信息系统专业 java实验周报告 (2015/2016学年 第一学期) 学生姓名: 学生班级: 学生学号: 指导教师: 2015年12月25日 实现屏幕截图的小程序一、实验题目实现屏幕截图的小程序二、实验要求编程一个应用小程序,能够具有屏幕截图的功能,截图的具体实现有:(1)显示出工作区域,即能够截屏的面积;(2)鼠标可以随意滑动进行截图;(3)将所截取的图片保存在想要保存的位置;(4)程序结束后可以退出整个应用。三、程序流程图3.1 业务流程图4、技术原理程序的主类是cutScreen,继承自无边框的框架JWindow;cutSc

2、reen()是一个定义屏幕尺寸的构造方法;使用方法mousePressed(MouseEvent e)来监听当前鼠标点击的动作;用方法mouseReleased(MouseEvent e)监听鼠标松开时,显示操作窗口;方法mouseDragged(MouseEvent e)监听拖动鼠标;paint(Graphics g)画出指定的工作区域;saveImage()保存图像。工具栏ToolsWindow类,继承自有边框的框架JFrame;方法init()用来设置布局方式为BorderLayout;run()捕捉屏幕截图。五、附实验代码import java.awt.*;import java.aw

3、t.event.*;import java.awt.image.BufferedImage;import java.awt.image.RescaleOp;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import javax.imageio.ImageIO;import javax.swing.*;import javax.swing.filechooser.FileNameExtensionFilter;import javax.s

4、wing.filechooser.FileSystemView;/Jwindow 是一个无边框的框架 public class cutScreen extends JWindow /beginX 开始的横坐标; beginY开始的纵坐标 private int beginX, beginY, endX, endY; private BufferedImage image = null; private BufferedImage tempImage = null; private BufferedImage saveImage = null; private ToolsWindow tools

5、 = null; /构造方法 public cutScreen() throws AWTException, IOException / 获取屏幕尺寸宽和高 int width = Toolkit.getDefaultToolkit().getScreenSize().width; int height = Toolkit.getDefaultToolkit().getScreenSize().height; / 设置窗口大小 /(0, 0, width, height)第一个0代表横坐标 ,第二个代表纵坐标 this.setBounds(0, 0, width, height); / 截取屏

6、幕 Robot robot = new Robot(); /参数Rectangle是代表工作区域 image = robot.createScreenCapture(new Rectangle(0, 0, width, height); ImageIO.write(image, jpg, new File(d:/1); / 本窗口添加监听(适配器) this.addMouseListener(new MouseAdapter() Override /当前鼠标点击动作 public void mousePressed(MouseEvent e) beginX = e.getX(); beginY

7、 = e.getY(); if (tools != null) tools.setVisible(false); Override public void mouseReleased(MouseEvent e) / 鼠标松开时,显示操作窗口 if (tools = null) tools = new ToolsWindow(cutScreen.this, e.getX(), e.getY(); else tools.setLocation(e.getX(), e.getY(); tools.setVisible(true); / 将此窗口置于前端,并可以将其设为焦点 Window tools.

8、toFront(); ); / 监听拖动鼠标 this.addMouseMotionListener(new MouseMotionAdapter() Override public void mouseDragged(MouseEvent e) / 鼠标拖动时,记录坐标并重绘窗口 endX = e.getX(); endY = e.getY(); / 临时图像,用于缓冲屏幕区域放置屏幕闪烁 Image tempImage2 = createImage(cutScreen.this.getWidth(), cutScreen.this.getHeight(); Graphics g = tem

9、pImage2.getGraphics(); g.drawImage(tempImage, 0, 0, null); int x = Math.min(beginX, endX); int y = Math.min(beginY, endY); int width2 = Math.abs(endX - beginX) + 1; int height2 = Math.abs(endY - beginY) + 1; g.drawRect(x - 1, y - 1, width2 + 1, height2 + 1); / 生成子区域流图片 saveImage = image.getSubimage(

10、x, y, width2, height2); /画出图片 g.drawImage(saveImage, x, y, null); /绘制当前指定的区域的图片 cutScreen.this.getGraphics().drawImage(tempImage2, 0, 0, cutScreen.this); ); / Override /画出指定的工作区域 public void paint(Graphics g) /进行逐像素重缩放 RescaleOp ro = new RescaleOp(0.8f, 0, null); tempImage = ro.filter(image, null);

11、g.drawImage(tempImage, 0, 0, this); / 保存图像到文件 public void saveImage() throws IOException JFileChooser jfc = new JFileChooser(); jfc.setDialogTitle(保存); / 文件过滤器,用户过滤可选择文件 FileNameExtensionFilter filter = new FileNameExtensionFilter(JPG, jpg); jfc.setFileFilter(filter); / 初始化一个默认文件(此文件会生成到桌面上) / 生成时间

12、SimpleDateFormat sdf = new SimpleDateFormat(yyyymmddHHmmss); String fileName = sdf.format(new Date(); File filePath = FileSystemView.getFileSystemView().getHomeDirectory(); File defaultFile = new File(filePath + File.separator + fileName + .jpg); jfc.setSelectedFile(defaultFile); int flag = jfc.show

13、SaveDialog(this); if (flag = JFileChooser.APPROVE_OPTION) File file = jfc.getSelectedFile(); String path = file.getPath(); /System.out.println(path); / 检查文件后缀,放置用户忘记输入后缀或者输入不正确的后缀 if (!(path.endsWith(.jpg) | path.endsWith(.JPG) path += .jpg; / 写入文件 ImageIO.write(saveImage, jpg, new File(path); Syste

14、m.exit(0); /* * 操作窗口 */ /ToolsWindow 内部类 class ToolsWindow extends JFrame private cutScreen parent; /构造函数(cutScreen,int x, int y)x代表鼠标释放位置的横坐标, public ToolsWindow(cutScreen parent, int x, int y) this.parent = parent; this.init(); this.setLocation(x, y); /让窗口里面的组建确定为最佳大小 this.pack(); this.setVisible(true); private void init() /设置布局方式为BorderLayout this.setLayout(new BorderLayout(); /工具栏 JTool

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1