用java做一个截图工具_Java制作屏幕截图软件(还可以保存到剪切板内)
原標題:Java制作屏幕截圖軟件(還可以保存到剪切板內)
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 是按鈕按下的一個事件publicclassActionJFrameextendsJFrameimplementsActionListener{ // 構造器 我們需要在構造器內初始化按鈕publicActionJFrame(){ // 這個就是按鈕 JButton jb = new JButton("截圖"); jb.addActionListener(this);// 把時間注冊到按鈕上 如果不注冊的話就不可以觸發 把事件和按鈕關聯起來this.add(jb);// 把按鈕添加到窗口之中this.setSize(100, 60); this.setAlwaysOnTop(true);// 窗口在所有窗口之上this.setVisible(true);// 顯示窗口 } publicstaticvoidmain(String[] args){ new ActionJFrame(); } publicvoidactionPerformed(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 凱哥 * *///顯示照片publicclassImageJFrameextendsJFrameimplementsjava.awt.event.MouseListener{ BufferedImage image = null; publicImageJFrame(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 進行繪畫 } // 窗口繪畫方法publicvoidpaint(Graphics g){ super.paint(g); g.drawImage(image, 0, 0, new ImageObserver() { publicbooleanimageUpdate(Image img, int infoflags, int x, int y, int width, int height){ // TODO Auto-generated method stubreturnfalse; } }); g.drawRect(x, y, w, h); } int x, y; int w, h; boolean b = false; publicvoidmousePressed(MouseEvent e){ // 按下if (b == false) { x = e.getX(); y = e.getY(); } } publicvoidmouseReleased(MouseEvent e){ // 彈起if (b == false) { w = e.getX() - x; h = e.getY() - y; this.repaint(); b = true; } } @OverridepublicvoidmouseClicked(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() { returnnew DataFlavor[] { DataFlavor.imageFlavor }; } publicbooleanisDataFlavorSupported(DataFlavor flavor){ return DataFlavor.imageFlavor.equals(flavor); } public Object getTransferData(DataFlavor flavor)throws UnsupportedFlavorException, IOException { if (isDataFlavorSupported(flavor)) return image; thrownewUnsupportedFlavorException(flavor); } }; Toolkit.getDefaultToolkit().getSystemClipboard() .setContents(trans, null); System.exit(0);// 關閉你的軟件 } catch (Exception e2) { // TODO: handle exception } } } @OverridepublicvoidmouseEntered(MouseEvent e){ // TODO Auto-generated method stub } @OverridepublicvoidmouseExited(MouseEvent e){ // TODO Auto-generated method stub } }返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的用java做一个截图工具_Java制作屏幕截图软件(还可以保存到剪切板内)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: realtek网卡mac硬改工具_七彩虹
- 下一篇: c 子类对象 访问父类对象受保护成员_j