`
lbfhappy
  • 浏览: 83233 次
社区版块
存档分类
最新评论

JAVA截屏程序(第二版)

阅读更多

刚才把截屏程序放出去之后,收到了朋友BeanSoft 的建议,刚来这里就能认识他,很高兴,现在又改进了一下,改进的地方如下

1,修复了选择选区后,再改变大小时,当把右侧的边框拖过左侧或者左侧的边框拖到右侧或者上面的边框拖过下面,只会显示一条边框的BUG.
2,在没有截屏的时候,会有一条提示的字符串跟着鼠标走.
3,在点了截屏之后,主窗口会先隐藏起来,截完图后才会弹出来
4,去掉了截屏时的自定义鼠标显示,因为这样的话,源代码编译之后,运行会出问题,因为别人的电脑上没有我那个鼠标的图片.
5,增加了可保存的图片格式,现在可保存(JPG,GIF,PNG,BMP)格式

源代码附上,可以直接自己编译,打成JAR包.我这里也提供一下可执行JAR包的下载.


点击下载可执行的JAR包
/**//*
 * CaptureScreen.java
 *
 * Created on 2007年8月30日, 下午12:46
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/


package hadeslee.swing;

/** *//**
 *
 * 
@author lbf
 
*/

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.imageio.*;
import java.awt.image.*;
public class CaptureScreen extends JFrame implements ActionListener{
    
private JButton start,cancel,save;
    
private JPanel c;
    
private BufferedImage get;
    
/** *//** Creates a new instance of CaptureScreen */
    
public CaptureScreen() {
        
super("屏幕截取软件(第二版)");
        initWindow();
    }

    
private void initWindow(){
        start
=new JButton("开始截取");
        cancel
=new JButton("退出");
        save
=new JButton("保存");
        save.setEnabled(
false);
        save.addActionListener(
this);
        start.addActionListener(
this);
        cancel.addActionListener(
this);
        JPanel buttonJP
=new JPanel();
        c
=new JPanel(new BorderLayout());
        JLabel jl
=new JLabel("屏幕截取",JLabel.CENTER);
        JLabel jl1
=new JLabel("作者:千里冰封",JLabel.CENTER);
        jl.setFont(
new Font("黑体",Font.BOLD,40));
        jl1.setFont(
new Font("宋体",Font.BOLD,20));
        jl.setForeground(Color.RED);
        jl1.setForeground(Color.BLUE);
        c.add(jl,BorderLayout.CENTER);
        c.add(jl1,BorderLayout.SOUTH);
        buttonJP.add(start);
        buttonJP.add(save);
        buttonJP.add(cancel);
        
this.getContentPane().add(c,BorderLayout.CENTER);
        
this.getContentPane().add(buttonJP,BorderLayout.SOUTH);
        
this.setSize(300,300);
        
this.setLocationRelativeTo(null);
        
this.setVisible(true);
        
this.setAlwaysOnTop(true);
        
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    
private void updates(){
        
this.setVisible(true);
        
if(get!=null){
            save.setEnabled(
true);
            ImageIcon ii
=new ImageIcon(get);
            JLabel jl
=new JLabel(ii);
            c.removeAll();
            c.add(
new JScrollPane(jl),BorderLayout.CENTER);
            SwingUtilities.updateComponentTreeUI(
this);
        }

    }

    
private void doStart(){
        
try{
            
this.setVisible(false);
            Thread.sleep(
500);//睡500毫秒是为了让主窗完全不见
            Robot ro=new Robot();
            Toolkit tk
=Toolkit.getDefaultToolkit();
            Dimension di
=tk.getScreenSize();
            Rectangle rec
=new Rectangle(0,0,di.width,di.height);
            BufferedImage bi
=ro.createScreenCapture(rec);
            JFrame jf
=new JFrame();
            Temp temp
=new Temp(jf,bi,di.width,di.height);
            jf.getContentPane().add(temp,BorderLayout.CENTER);
            jf.setUndecorated(
true);
            jf.setSize(di);
            jf.setVisible(
true);
            jf.setAlwaysOnTop(
true);
        }
 catch(Exception exe){
            exe.printStackTrace();
        }

    }
 
    
private void doSave(){
        
try{
            JFileChooser jfc
=new JFileChooser(".");
            jfc.addChoosableFileFilter(
new JPGfilter());
            jfc.addChoosableFileFilter(
new PNGfilter());
            jfc.addChoosableFileFilter(
new GIFfilter());
            jfc.addChoosableFileFilter(
new BMPfilter());
            
int i=jfc.showSaveDialog(this);
            
if(i==JFileChooser.APPROVE_OPTION){
                File file
=jfc.getSelectedFile();
                String about
="PNG";
                String ext
=file.toString().toLowerCase();
                javax.swing.filechooser.FileFilter ff
=jfc.getFileFilter();
                
if(ff instanceof JPGfilter){
                    
if(!ext.endsWith(".jpg")){
                        String ns
=ext+".jpg";
                        file
=new File(ns);
                        about
="JPG";
                    }

                }
 else if(ff instanceof PNGfilter){
                    
if(!ext.endsWith(".png")){
                        String ns
=ext+".png";
                        file
=new File(ns);
                        about
="PNG";
                    }

                }
else if(ff instanceof BMPfilter){
                    
if(!ext.endsWith(".bmp")){
                        String ns
=ext+".bmp";
                        file
=new File(ns);
                        about
="BMP";
                    }

                }
else if(ff instanceof GIFfilter){
                    
if(!ext.endsWith(".gif")){
                        String ns
=ext+".gif";
                        file
=new File(ns);
                        about
="GIF";
                    }

                }

                
if(ImageIO.write(get,about,file)){
                    JOptionPane.showMessageDialog(
this,"保存成功!");
                }
 else
                    JOptionPane.showMessageDialog(
this,"保存失败!");
            }

        }
 catch(Exception exe){
            exe.printStackTrace();
        }

    }

分享到:
评论

相关推荐

    java程序设计报告模板

    第二部分:数据库信息描述 - **数据库设计**:介绍数据库的整体设计思路,包括表结构、字段定义等。 - **数据模型**:绘制ER图或其他数据模型图,直观展示数据之间的关系。 - **数据操作**:描述如何通过Java代码...

    基于Java Swing的图书管理系统-版本二(csdn)————程序.pdf

    【基于Java Swing的图书管理系统-版本二】是一个利用Java编程语言和Swing GUI库开发的图书管理应用程序。这个系统提供了一系列功能,旨在帮助用户高效地管理和操作图书信息。以下是该系统的详细知识点: 1. **图书...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    截图/粘贴剪切版图片并自动上传Java版(Servlet/Spring)

    标题提到的"截图/粘贴剪切版图片并自动上传Java版(Servlet/Spring)"是一个创新的功能,它旨在简化用户在网页上上传截图的流程。这个功能使得用户可以直接从操作系统剪切板中粘贴截图,而无需先保存文件再进行上传,...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    JAVA程序设计实验报告

    本实验报告是针对大学生JAVA程序设计课程的,基于吕凤翥第二版教材,旨在通过实际操作加深对JAVA语言的理解,特别是GUI(图形用户界面)菜单设计方面的能力培养。实验的主要目标是让学生掌握菜单设计、弹出菜单设计...

    java下载(含截图)

    - Java SE (Standard Edition) 是用于开发桌面应用程序的标准版 Java 平台。 - 选择正确的 Java 版本对于后续的开发工作至关重要。 3. **关键知识点**: - **Java SE**: 主要用于开发桌面应用,包含了基本的 ...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、...

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、...

    JAVA上百实例源码以及开源项目源代码

    1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、...

    数据结构与算法分析 Java语言描述第2版

    《数据结构与算法分析:Java语言描述(第2版)》把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。内容截图目录:译者序前言第1章 引论...

    【藏宝图】(珍藏版)2012java开发工程师必备精品资料(115)

    该聊天程序支持私聊、公聊、截图、文件传输等功能,是一份非常实用的Java程序示例。 #### 二十五、《代码之美(精选版)》 这本书收录了多位顶级程序员撰写的关于代码编写的文章,对于提高代码质量和编程美感很有...

    JAVA.WEB服务.构建与运行

     《Java Web 服务:构建与运行(影印版)》提供了对Java的API的一个全面介绍,包括针对XML Web服务的JAX-WS和针对RESTful Web服务的JAX-RS。《Java Web服务:构建与运行》通过提供混合架构概述、完整的工作代码示例...

    Java课程设计任务书

    5. 如果设计题目来源于《Java课程设计案例精编(第二版)》,则需要在此基础上增加1-2项新功能。 课程设计报告应包含以下部分: 1. 封面 2. 目录 3. 系统描述:介绍系统的功能和解决的问题 4. 分析与设计:功能模块...

    Android游戏-动物连连看游戏源码(java实现,可作学习及课设使用,附运行教程)

    通过此程序,初学者可以了解安卓开发的基本概念和基本操作,掌握如何使用Java语言开发安卓应用程序。(3)源代码和配置文件完整,包括了所有必要的文件和资源。这使得学习者可以全面了解程序的各个部分,从界面设计...

    包裹转运物流小程序源码加截图.7z

    "源码"意味着这里是程序开发的原始代码,可供程序员进行二次开发或学习使用。".7z"是文件的压缩格式,通常用于存储大量文件并减小其占用的磁盘空间。 【描述解析】 描述中的"包裹转运物流小程序源码加截图.7z"与...

    基于Java开发的考试系统源码

    【Java开发的考试系统源码】是一个用于实现单机版考试登录功能的程序,它基于Java编程语言构建,提供了一套完整的系统供用户进行在线测试。这个系统可能包含了登录界面的设计、用户验证机制、试题库管理、考试流程...

Global site tag (gtag.js) - Google Analytics