標籤:
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製作螢幕軟體(還可以儲存到剪下板內)