亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? capturescreen.java

?? JAVA截屏程序源碼
?? JAVA
字號(hào):
/*
 * CaptureScreen.java
 *
 * Created on 2006年9月7日, 上午10:59
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package test1;

/**
 *
 * @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("開(kāi)始截取");
        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(){
        if(get!=null){
            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{
            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();
            jf.getContentPane().add(new Temp(jf,bi,di.width,di.height));
            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());
            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";
                    }
                }
                
                if(ImageIO.write(get,about,file)){
                    JOptionPane.showMessageDialog(this,"保存成功!");
                    save.setEnabled(false);
                } else
                    JOptionPane.showMessageDialog(this,"保存失敗!");
            }
        } catch(Exception exe){
            exe.printStackTrace();
        }
    }
    public void actionPerformed(ActionEvent ae){
        if(ae.getSource()==start){
            doStart();
        } else if(ae.getSource()==cancel){
            System.exit(0);
        } else if(ae.getSource()==save){
            doSave();
        }
    }
    //一個(gè)文件后綴名選擇器
    private class JPGfilter extends javax.swing.filechooser.FileFilter{
        public JPGfilter(){
            
        }
        public boolean accept(File file){
            if(file.toString().toLowerCase().endsWith(".jpg")||
                    file.toString().toLowerCase().endsWith(".jpeg")||
                    file.isDirectory()){
                return true;
            } else
                return false;
        }
        public String getDescription(){
            return "*.JPG,*.JPEG(JPG,JPEG圖像)";
        }
    }
    private class PNGfilter extends javax.swing.filechooser.FileFilter{
        public boolean accept(File file){
            if(file.toString().toLowerCase().endsWith(".png")||
                    file.isDirectory()){
                return true;
            } else
                return false;
        }
        public String getDescription(){
            return "*.PNG(PNG圖像)";
        }
    }
    //一個(gè)暫時(shí)類,用于顯示當(dāng)前的屏幕圖像
    private class Temp extends JPanel implements MouseListener,MouseMotionListener{
        private BufferedImage bi;
        private int width,height;
        private int startX,startY,endX,endY,tempX,tempY;
        private JFrame jf;
        private Rectangle select=new Rectangle(0,0,0,0);//表示選中的區(qū)域
        private Cursor cs;//表示一般情況下的鼠標(biāo)狀態(tài)
        private States current=States.DEFAULT;// 表示當(dāng)前的編輯狀態(tài)
        private Rectangle[] rec;//表示八個(gè)編輯點(diǎn)的區(qū)域
        public Temp(JFrame jf,BufferedImage bi,int width,int height){
            this.jf=jf;
            this.bi=bi;
            this.width=width;
            this.height=height;
            this.addMouseListener(this);
            this.addMouseMotionListener(this);
            Image icon=Toolkit.getDefaultToolkit().createImage(this.getClass().getResource("icon.png"));
            cs=Toolkit.getDefaultToolkit().createCustomCursor(icon,new Point(0,0),"icon");
            this.setCursor(cs);
            initRecs();
        }
        private void initRecs(){
            rec=new Rectangle[8];
            for(int i=0;i<rec.length;i++){
                rec[i]=new Rectangle();
            }
        }
        public void paintComponent(Graphics g){
            g.drawImage(bi,0,0,width,height,this);
            g.setColor(Color.RED);
            g.drawLine(startX,startY,endX,startY);
            g.drawLine(startX,endY,endX,endY);
            g.drawLine(startX,startY,startX,endY);
            g.drawLine(endX,startY,endX,endY);
            int x=startX<endX?startX:endX;
            int y=startY<endY?startY:endY;
            select=new Rectangle(x,y,Math.abs(endX-startX),Math.abs(endY-startY));
            int x1=(startX+endX)/2;
            int y1=(startY+endY)/2;
            g.fillRect(x1-2,startY-2,5,5);
            g.fillRect(x1-2,endY-2,5,5);
            g.fillRect(startX-2,y1-2,5,5);
            g.fillRect(endX-2,y1-2,5,5);
            g.fillRect(startX-2,startY-2,5,5);
            g.fillRect(startX-2,endY-2,5,5);
            g.fillRect(endX-2,startY-2,5,5);
            g.fillRect(endX-2,endY-2,5,5);
            rec[0]=new Rectangle(x-5,y-5,10,10);
            rec[1]=new Rectangle(x1-5,y-5,10,10);
            rec[2]=new Rectangle((startX>endX?startX:endX)-5,y-5,10,10);
            rec[3]=new Rectangle((startX>endX?startX:endX)-5,y1-5,10,10);
            rec[4]=new Rectangle((startX>endX?startX:endX)-5,(startY>endY?startY:endY)-5,10,10);
            rec[5]=new Rectangle(x1-5,(startY>endY?startY:endY)-5,10,10);
            rec[6]=new Rectangle(x-5,(startY>endY?startY:endY)-5,10,10);
            rec[7]=new Rectangle(x-5,y1-5,10,10);
        }
        public void mouseMoved(MouseEvent me){
            if(select.contains(me.getPoint())){
                this.setCursor(new Cursor(Cursor.MOVE_CURSOR));
                current=States.MOVE;
            } else{
                States[] st=States.values();
                for(int i=0;i<rec.length;i++){
                    if(rec[i].contains(me.getPoint())){
                        current=st[i];
                        this.setCursor(st[i].getCursor());
                        return;
                    }
                }
                this.setCursor(cs);
                current=States.DEFAULT;
            }
        }
        public void mouseExited(MouseEvent me){
            
        }
        public void mouseEntered(MouseEvent me){
            
        }
        public void mouseDragged(MouseEvent me){
            int x=me.getX();
            int y=me.getY();
            if(current==States.MOVE){
                startX+=(x-tempX);
                startY+=(y-tempY);
                endX+=(x-tempX);
                endY+=(y-tempY);
                tempX=x;
                tempY=y;
            }else if(current==States.EAST){
                if(startX>endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
            }else if(current==States.NORTH){
                if(startY<endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
            }else if(current==States.WEST){
                if(startX<endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
            }else if(current==States.SOUTH){
                if(startY>endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
            } else if(current==States.NORTH_EAST){
                if(startX>endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
                if(startY<endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
            }else if(current==States.NORTH_WEST){
                if(startX<endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
                if(startY<endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
            }else if(current==States.SOUTH_EAST){
                if(startY>endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
                if(startX>endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
            }else if(current==States.SOUTH_WEST){
                if(startY>endY){
                    startY+=(y-tempY);
                    tempY=y;
                }else{
                    endY+=(y-tempY);
                    tempY=y;
                }
                if(startX<endX){
                    startX+=(x-tempX);
                    tempX=x;
                } else{
                    endX+=(x-tempX);
                    tempX=x;
                }
            }

            else{
                startX=tempX;
                startY=tempY;
                endX=me.getX();
                endY=me.getY();
            }
            this.repaint();
        }
        public void mousePressed(MouseEvent me){
            tempX=me.getX();
            tempY=me.getY();
        }
        public void mouseReleased(MouseEvent me){
            if(me.isPopupTrigger()){
                if(current==States.MOVE){
                    startX=0;
                    startY=0;
                    endX=0;
                    endY=0;
                    repaint();
                } else{
                    jf.dispose();
                    updates();
                }
                
            }
        }
        public void mouseClicked(MouseEvent me){
            if(me.getClickCount()==2){
                //Rectangle rec=new Rectangle(startX,startY,Math.abs(endX-startX),Math.abs(endY-startY));
                Point p=me.getPoint();
                if(select.contains(p)){
                    if(select.x+select.width<this.getWidth()&&select.y+select.height<this.getHeight()){
                        get=bi.getSubimage(select.x,select.y,select.width,select.height);
                        jf.dispose();
                        save.setEnabled(true);
                        updates();
                    }else{
                        int wid=select.width,het=select.height;
                        if(select.x+select.width>=this.getWidth()){
                            wid=this.getWidth()-select.x;
                        }
                        if(select.y+select.height>=this.getHeight()){
                            het=this.getHeight()-select.y;
                        }
                        get=bi.getSubimage(select.x,select.y,wid,het);
                        jf.dispose();
                        save.setEnabled(true);
                        updates();
                    }
                    
                }
            }
        }
    }
    
    public static void main(String args[]){
        new CaptureScreen();
    }
}
enum States{
    NORTH_WEST(new Cursor(Cursor.NW_RESIZE_CURSOR)),//表示西北角
    NORTH(new Cursor(Cursor.N_RESIZE_CURSOR)),
    NORTH_EAST(new Cursor(Cursor.NE_RESIZE_CURSOR)),
    EAST(new Cursor(Cursor.E_RESIZE_CURSOR)),
    SOUTH_EAST(new Cursor(Cursor.SE_RESIZE_CURSOR)),
    SOUTH(new Cursor(Cursor.S_RESIZE_CURSOR)),
    SOUTH_WEST(new Cursor(Cursor.SW_RESIZE_CURSOR)),
    WEST(new Cursor(Cursor.W_RESIZE_CURSOR)),
    MOVE(new Cursor(Cursor.MOVE_CURSOR)),
    DEFAULT(new Cursor(Cursor.DEFAULT_CURSOR));
    private Cursor cs;
    States(Cursor cs){
        this.cs=cs;
    }
    public Cursor getCursor(){
        return cs;
    }
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费看黄色91| 97超碰欧美中文字幕| 日韩二区在线观看| 亚洲成人av电影| 亚洲一区欧美一区| 夜夜嗨av一区二区三区网页| 亚洲精品福利视频网站| 亚洲精品综合在线| 亚洲综合清纯丝袜自拍| 亚洲一区二区影院| 香蕉影视欧美成人| 日本欧美一区二区三区| 日本午夜一本久久久综合| 日本美女一区二区三区视频| 日韩黄色在线观看| 久久精品国产免费| 国产伦精品一区二区三区免费迷| 国产一区二区91| 丁香网亚洲国际| proumb性欧美在线观看| 色国产精品一区在线观看| 欧美日韩一区二区三区四区五区 | 婷婷亚洲久悠悠色悠在线播放| 一区二区三区在线免费观看| 亚洲一区二区视频在线观看| 性欧美疯狂xxxxbbbb| 久久av资源网| 成人午夜视频福利| 91国产免费观看| 91精品欧美福利在线观看| 日韩欧美国产综合一区| 中文字幕国产一区二区| 亚洲精品国产第一综合99久久| 三级精品在线观看| 国产一区欧美日韩| 色婷婷综合久久久久中文一区二区 | 国产91精品在线观看| 91色porny蝌蚪| 欧美高清视频不卡网| 久久色.com| 一区二区三区丝袜| 久久成人久久爱| 99re6这里只有精品视频在线观看| 欧美三级电影网| 久久精品综合网| 亚洲综合久久久| 韩国精品主播一区二区在线观看| 99久久er热在这里只有精品15| 欧美日韩一区二区在线视频| 久久久噜噜噜久久人人看| 亚洲精品成人在线| 韩国女主播成人在线观看| 91在线观看美女| 精品美女在线观看| 一区二区三区中文字幕| 国产自产视频一区二区三区| 在线中文字幕一区二区| 久久久影视传媒| 亚洲成av人片在线观看| 成人高清免费在线播放| 欧美一级高清片| 亚洲女同ⅹxx女同tv| 国产一区二区在线电影| 欧美日韩久久久| 中文字幕一区二区三区精华液 | 欧洲激情一区二区| 国产欧美中文在线| 日韩av电影天堂| 色婷婷激情久久| 国产欧美一区二区精品性色| 日本成人在线不卡视频| 91麻豆免费看片| 国产欧美精品国产国产专区| 日韩精品免费专区| 日本黄色一区二区| 国产精品无人区| 国内久久精品视频| 欧美一区二区三区在| 亚洲国产色一区| 一本色道久久综合精品竹菊| 日本一区二区视频在线观看| 麻豆精品国产传媒mv男同| 精品视频免费在线| 亚洲激情图片小说视频| 成人国产一区二区三区精品| 精品日韩欧美在线| 蜜桃一区二区三区四区| 欧美人妇做爰xxxⅹ性高电影 | 亚洲午夜久久久久中文字幕久| 成人爱爱电影网址| 国产欧美精品一区二区三区四区 | 欧美综合久久久| 亚洲精品中文在线观看| 99热精品国产| 国产精品第五页| 不卡av免费在线观看| 欧美国产日韩a欧美在线观看| 国产一区999| 精品区一区二区| 看片的网站亚洲| 精品噜噜噜噜久久久久久久久试看 | 日本精品视频一区二区三区| 国产精品热久久久久夜色精品三区| 国产剧情一区二区三区| 久久色成人在线| 国产高清在线观看免费不卡| 久久精品在这里| 成人深夜福利app| 亚洲欧洲精品天堂一级| 97se亚洲国产综合自在线不卡| 国产精品欧美一区喷水| 99精品国产热久久91蜜凸| 亚洲欧洲在线观看av| 91婷婷韩国欧美一区二区| 亚洲另类色综合网站| 日本二三区不卡| 亚洲mv在线观看| 日韩一区二区高清| 国产一区二区三区最好精华液| 久久亚洲影视婷婷| 成人午夜精品在线| 亚洲色欲色欲www| 欧美三级三级三级爽爽爽| 爽好多水快深点欧美视频| 日韩美女天天操| 国产白丝网站精品污在线入口| 国产精品传媒视频| 欧美性色综合网| 强制捆绑调教一区二区| 精品国精品国产| 成人av片在线观看| 亚洲综合清纯丝袜自拍| 欧美一级夜夜爽| 高清不卡一二三区| 夜夜嗨av一区二区三区| 日韩精品中午字幕| 成人黄色小视频在线观看| 亚洲一区在线视频| 欧美成人一区二区| eeuss国产一区二区三区| 亚洲国产精品视频| 26uuu色噜噜精品一区二区| av网站免费线看精品| 天天影视色香欲综合网老头| 久久一区二区视频| 91极品美女在线| 韩国欧美国产1区| 一区二区三区在线免费视频| 欧美成人a视频| 91毛片在线观看| 久久爱另类一区二区小说| 亚洲桃色在线一区| 欧美一级一级性生活免费录像| 成人av在线资源| 视频一区中文字幕国产| 欧美高清在线视频| 欧美高清视频一二三区 | 99国产精品国产精品久久| 日韩国产在线观看一区| 亚洲国产精品成人综合色在线婷婷 | 一区二区三区日韩欧美精品| 日韩美女一区二区三区四区| 色视频一区二区| 国产精品综合一区二区| 午夜精品在线看| 国产精品久久二区二区| 日韩精品一区二区三区老鸭窝| 91麻豆国产自产在线观看| 国产一区二区影院| 天天av天天翘天天综合网色鬼国产| 国产肉丝袜一区二区| 制服丝袜av成人在线看| 91亚洲男人天堂| 国产成人在线观看| 蜜桃av噜噜一区| 亚洲成人动漫在线观看| 国产精品乱码人人做人人爱| 精品久久免费看| 欧美日韩精品二区第二页| 99riav一区二区三区| 国产一区二区三区在线观看免费视频 | 色综合视频一区二区三区高清| 久久精品国产精品亚洲红杏| 亚洲综合激情另类小说区| 国产精品久久久久久久岛一牛影视 | 天天做天天摸天天爽国产一区 | 成人免费毛片片v| 麻豆精品新av中文字幕| 午夜精品福利一区二区蜜股av | 久久国内精品自在自线400部| 一区二区三区欧美亚洲| 国产精品成人免费在线| 国产无遮挡一区二区三区毛片日本| 91精品国产综合久久婷婷香蕉| 在线视频综合导航| 色屁屁一区二区| 色婷婷久久综合| 色婷婷综合久久| 91精品91久久久中77777| 色综合久久六月婷婷中文字幕|