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

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源码包---java 源码 大量 实例

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

    java源码包4

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

    java源码包3

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

    java源码包2

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

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

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

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

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

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

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

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

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

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

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

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

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

    JAVA.WEB服务.构建与运行

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

    JAVA实验报告一.docx

    配置成功截图: 图1.1 显示java的版本信息图 简单的程序设计: 题目1:在屏幕上打印"Hello World" 程序代码: public class Test { public static void main(String args[]){ System.out.print("Hello world!...

    精通Qt4编程(第二版)源代码

    \ 第4章 程序主窗口—— QMainWindow 卢传富 Qt应用程序的主窗口是由多个部件/组件构成的框架,本章通过一个简单文本编辑器的例子,介绍了主窗口的菜单、工具条、中心部件、锚接部件和状态条,并通过Qt设计器绘制和...

    SCALA编程思想 原书第2版 PDF 下载

    资料简介: ...访问可下载练习解答和代码示例,还可了解本书英文版的实时动态。本书无需编程背景知识,适合Scala初学者阅读。同时,本书也为有经验的程序员提供了“快车道”,共同探索编程语言未来的模样。

    java课程设计之学生信息管理系统源码.zip

    3. 第二部需要导入数据库,我们用的是navicat数据库管理软件,非常好用,建议大家也使用这个。 4. 首先先新建一个名为db_student_swing的数据库,然后双击新建的数据库打开。 5. 导入项目根目录下的sql文件,导入后...

    Java swing实现学生信息管理系统源码+文档

    3. 第二部需要导入数据库,我们用的是navicat数据库管理软件,非常好用,建议大家也使用这个。 4. 首先先新建一个名为db_student_swing的数据库,然后双击新建的数据库打开。 5. 导入项目根目录下的sql文件,导入后...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

Global site tag (gtag.js) - Google Analytics