Java製作螢幕截圖軟體(還可以儲存到剪下板內)

來源:互聯網
上載者:User

標籤:

package com.kaige123;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;import javax.swing.JButton;import javax.swing.JFrame;/** * 螢幕頁面 *  * @author 凱哥 * *///螢幕的開始視窗 此視窗中會有一個按鈕 點擊按鈕就可以        ActionListener 是按鈕按下的一個事件public class ActionJFrame extends JFrame implements ActionListener {    // 構造器 我們需要在構造器內初始化按鈕    public ActionJFrame() {        // 這個就是按鈕        JButton jb = new JButton("");        jb.addActionListener(this);// 把時間註冊到按鈕上 如果不註冊的話就不可以觸發 把事件和按鈕關聯起來        this.add(jb);// 把按鈕添加到視窗之中        this.setSize(100, 60);        this.setAlwaysOnTop(true);// 視窗在所有視窗之上        this.setVisible(true);// 顯示視窗    }    public static void main(String[] args) {        new ActionJFrame();    }    public void actionPerformed(ActionEvent e) {         this.setVisible(false);// 視窗隱藏起來        // 開始        // java.awt         try {             Thread.sleep(100);//停頓一下            // 機器人 控制滑鼠 修飾鍵盤 螢幕            Robot r = new Robot();            Toolkit t = Toolkit.getDefaultToolkit();            // 獲得螢幕的高 螢幕寬            int width = t.getScreenSize().width;            int height = t.getScreenSize().height;            // 開始 參數必須告訴人家 多大            BufferedImage image = r.createScreenCapture(new Rectangle(width,                    height));            // BufferedImage 緩衝在記憶體之中的 照片            //把緩衝中的照片儲存到磁碟的 a.jpg中            //ImageIO.write(image, "jpeg", new File("c:/a.jpg"));            new ImageJFrame(image);         } catch (Exception e2) {         }    }}
package com.kaige123;import java.awt.Graphics;import java.awt.Image;import java.awt.Rectangle;import java.awt.Robot;import java.awt.Toolkit;import java.awt.datatransfer.DataFlavor;import java.awt.datatransfer.Transferable;import java.awt.datatransfer.UnsupportedFlavorException;import java.awt.event.MouseEvent;import java.awt.image.BufferedImage;import java.awt.image.ImageObserver;import java.io.IOException;import javax.swing.JFrame;/** * 顯示照片 * 然後進行儲存 * @author 凱哥 * *///顯示照片public class ImageJFrame extends JFrame implements java.awt.event.MouseListener {    BufferedImage image = null;    public ImageJFrame(BufferedImage image) {        this.image = image;// 把傳遞進來的對象儲存到屬性上        Toolkit t = Toolkit.getDefaultToolkit();        // 獲得螢幕的高 螢幕寬        int width = t.getScreenSize().width;        int height = t.getScreenSize().height;        this.setSize(width, height);// 設定視窗的大小        this.addMouseListener(this);        this.setUndecorated(true);// 去掉視窗的邊框        this.setVisible(true);// 視窗一旦顯示 就開始調用 paint 進行繪畫    }    // 視窗繪畫方法    public void paint(Graphics g) {        super.paint(g);        g.drawImage(image, 0, 0, new ImageObserver() {            public boolean imageUpdate(Image img, int infoflags, int x, int y,                    int width, int height) {                // TODO Auto-generated method stub                return false;            }        });        g.drawRect(x, y, w, h);    }    int x, y;    int w, h;    boolean b = false;    public void mousePressed(MouseEvent e) { // 按下        if (b == false) {            x = e.getX();            y = e.getY();        }    }    public void mouseReleased(MouseEvent e) { // 彈起        if (b == false) {            w = e.getX() - x;            h = e.getY() - y;            this.repaint();            b = true;        }    }    @Override    public void mouseClicked(MouseEvent e) {        if (b && e.getClickCount() == 2) {// 你的滑鼠有沒有雙擊            try {                // 把好的照片儲存起來                Robot r = new Robot();                final BufferedImage image = r                        .createScreenCapture(new Rectangle(x + 1, y + 1, w - 1,                                h - 1));                // ImageIO.write(image, "jpeg", new File("c:/a.jpg"));                Transferable trans = new Transferable() {                    public DataFlavor[] getTransferDataFlavors() {                        return new DataFlavor[] { DataFlavor.imageFlavor };                    }                    public boolean isDataFlavorSupported(DataFlavor flavor) {                        return DataFlavor.imageFlavor.equals(flavor);                    }                    public Object getTransferData(DataFlavor flavor)                            throws UnsupportedFlavorException, IOException {                        if (isDataFlavorSupported(flavor))                            return image;                        throw new UnsupportedFlavorException(flavor);                    }                };                Toolkit.getDefaultToolkit().getSystemClipboard()                        .setContents(trans, null);                System.exit(0);// 關閉你的軟體            } catch (Exception e2) {                // TODO: handle exception            }        }    }    @Override    public void mouseEntered(MouseEvent e) {        // TODO Auto-generated method stub    }    @Override    public void mouseExited(MouseEvent e) {        // TODO Auto-generated method stub    }}

Java製作螢幕軟體(還可以儲存到剪下板內)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.