<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 38,  comments - 22,  trackbacks - 0

    桌面截圖功能

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionListener;

    /**
    ?* 用Java模擬出QQ桌面截圖功能
    ?*/

    public class Test extends JFrame {

    ?private static final long serialVersionUID = -267804510087895906L;

    ?private JButton button = null;
    ?
    ?private JLabel imgLabel = null;

    ?public Test() {
    ??button = new JButton("模擬屏幕(點(diǎn)右鍵退出)");
    ??button.addActionListener(new ActionListener() {
    ???public void actionPerformed(ActionEvent e) {
    ????try {
    ?????new ScreenWindow(imgLabel);
    ????} catch (Exception e1) {
    ?????JOptionPane.showConfirmDialog(null, "出現(xiàn)意外錯(cuò)誤!", "系統(tǒng)提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
    ????}
    ???}
    ??});
    ??JPanel pane = new JPanel();
    ??pane.setBackground(Color.WHITE);
    ??imgLabel = new JLabel();
    ??pane.add(imgLabel);
    ??JScrollPane spane = new JScrollPane(pane);
    ??this.getContentPane().add(button, BorderLayout.NORTH);
    ??this.getContentPane().add(spane);
    ??this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ??this.setSize(300, 200);
    ??this.setLocationRelativeTo(null);
    ??this.setVisible(true);
    ?}

    ?public static void main(String[] args) {
    ??new Test();
    ?}
    }

    class ScreenWindow extends JFrame {

    ?private static final long serialVersionUID = -3758062802950480258L;
    ?
    ?private boolean isDrag = false;

    ?private int x = 0;

    ?private int y = 0;

    ?private int xEnd = 0;

    ?private int yEnd = 0;

    ?public ScreenWindow(final JLabel imgLabel) throws AWTException, InterruptedException {
    ??Dimension screenDims = Toolkit.getDefaultToolkit().getScreenSize();
    ??JLabel label = new JLabel(new ImageIcon(ScreenImage.getScreenImage(0, 0, screenDims.width, screenDims.height)));
    ??label.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
    ??label.addMouseListener(new MouseAdapter() {
    ???public void mouseClicked(MouseEvent e) {
    ????if (e.getButton() == MouseEvent.BUTTON3) {
    ?????dispose();
    ????}
    ???}

    ???public void mousePressed(MouseEvent e) {
    ????x = e.getX();
    ????y = e.getY();
    ???}

    ???public void mouseReleased(MouseEvent e) {
    ????if (isDrag) {
    ?????xEnd = e.getX();
    ?????yEnd = e.getY();
    ?????if(x > xEnd){
    ??????int temp = x;
    ??????x = xEnd;
    ??????xEnd = temp;
    ?????}
    ?????if(y > yEnd){
    ??????int temp = y;
    ??????y = yEnd;
    ??????yEnd = temp;
    ?????}
    ?????try {
    ??????imgLabel.setIcon(new ImageIcon(ScreenImage.getScreenImage(x, y, xEnd - x, yEnd - y)));
    ?????} catch (Exception ex) {
    ??????JOptionPane.showConfirmDialog(null, "出現(xiàn)意外錯(cuò)誤!", "系統(tǒng)提示", JOptionPane.DEFAULT_OPTION, JOptionPane.ERROR_MESSAGE);
    ?????}
    ?????dispose();
    ????}
    ???}
    ??});
    ??label.addMouseMotionListener(new MouseMotionListener() {
    ???public void mouseDragged(MouseEvent e) {
    ????if(!isDrag)
    ?????isDrag = true;
    ???}

    ???public void mouseMoved(MouseEvent e) {
    ????/** 拖動(dòng)過(guò)程的虛線選取框需自己實(shí)現(xiàn) */
    ???}
    ??});
    ??this.setUndecorated(true);
    ??this.getContentPane().add(label);
    ??this.setSize(screenDims.width, screenDims.height);
    ??this.setVisible(true);
    ??this.setExtendedState(JFrame.MAXIMIZED_BOTH);
    ?}
    }

    class ScreenImage {

    ?public static Image getScreenImage(int x, int y, int w, int h) throws AWTException, InterruptedException {
    ??Robot robot = new Robot();
    ??Image screen = robot.createScreenCapture(new Rectangle(x, y, w, h)).getScaledInstance(w, h, Image.SCALE_SMOOTH);
    ??MediaTracker tracker = new MediaTracker(new Label());
    ??tracker.addImage(screen, 1);
    ??tracker.waitForID(0);
    ??return screen;
    ?}
    }

    截屏

    public class GuiCamera {
    ?private String fileName; //文件的前綴

    ?private String defaultName = "GuiCamera";

    ?static int serialNum = 0;

    ?private String imageFormat; //圖像文件的格式

    ?private String defaultImageFormat = "png";

    ?Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

    ?/****************************************************************
    ? * 默認(rèn)的文件前綴為GuiCamera,文件格式為PNG格式
    ? * The default construct will use the default?
    ? * Image file surname "GuiCamera",?
    ? * and default image format "png"
    ? ****************************************************************/
    ?public GuiCamera() {
    ??fileName = defaultName;
    ??imageFormat = defaultImageFormat;

    ?}

    ?/****************************************************************
    ? * @param s the surname of the snapshot file
    ? * @param format the format of the? image file,?
    ? * it can be "jpg" or "png"
    ? * 本構(gòu)造支持JPG和PNG文件的存儲(chǔ)
    ? ****************************************************************/
    ?public GuiCamera(String s, String format) {

    ??fileName = s;
    ??imageFormat = format;
    ?}

    ?/****************************************************************
    ? * 對(duì)屏幕進(jìn)行拍照
    ? * snapShot the Gui once
    ? ****************************************************************/
    ?public void snapShot() {

    ??try {
    ???//拷貝屏幕到一個(gè)BufferedImage對(duì)象screenshot
    ???BufferedImage screenshot = (new Robot())
    ?????.createScreenCapture(new Rectangle(0, 0,
    ???????(int) d.getWidth(), (int) d.getHeight()));
    ???serialNum++;
    ???//根據(jù)文件前綴變量和文件格式變量,自動(dòng)生成文件名
    ???String name = fileName + String.valueOf(serialNum) + "."
    ?????+ imageFormat;
    ???File f = new File(name);
    ???System.out.print("Save File " + name);
    ???//將screenshot對(duì)象寫入圖像文件
    ???ImageIO.write(screenshot, imageFormat, f);
    ???System.out.print("..Finished!\n");
    ??} catch (Exception ex) {
    ???System.out.println(ex);
    ??}
    ?}

    ?public static void main(String[] args) {
    ??GuiCamera cam = new GuiCamera("d:\\Hello", "png");//

    ??cam.snapShot();
    ?}
    }

    透明窗體
    public class TransparentBackground extends JComponent implements
    ??ComponentListener, WindowFocusListener, Runnable {
    ?private JFrame frame;

    ?private Image background;

    ?private long lastupdate = 0;

    ?public boolean refreshRequested = true;

    ?public TransparentBackground(JFrame frame) {
    ??this.frame = frame;
    ??updateBackground();
    ??frame.addComponentListener(this);
    ??frame.addWindowFocusListener(this);
    ??new Thread(this).start();
    ?}

    ?public void componentShown(ComponentEvent evt) {
    ??repaint();
    ?}

    ?public void componentResized(ComponentEvent evt) {
    ??repaint();
    ?}

    ?public void componentMoved(ComponentEvent evt) {
    ??repaint();
    ?}

    ?public void componentHidden(ComponentEvent evt) {
    ?}

    ?public void windowGainedFocus(WindowEvent evt) {
    ??refresh();
    ?}

    ?public void windowLostFocus(WindowEvent evt) {
    ?? refresh();
    ?}

    ?public void refresh() {
    ??if (frame.isVisible()) {
    ???repaint();
    ???refreshRequested = true;
    ???lastupdate = new Date().getTime();
    ??}
    ?}

    ?public void run() {
    ??try {
    ???while (true) {
    ????Thread.sleep(250);
    ????long now = new Date().getTime();
    ????if (refreshRequested && ((now - lastupdate) > 1000)) {
    ?????if (frame.isVisible()) {
    ??????Point location = frame.getLocation();
    //??????frame.setVisible(false);
    ??????updateBackground();
    //??????frame.setVisible(true);
    ??????frame.setLocation(location);
    ??????refresh();
    ?????}
    ?????lastupdate = now;
    ?????refreshRequested = false;
    ????}
    ???}
    ??} catch (Exception ex) {
    ???ex.printStackTrace();
    ??}
    ?}

    ?public static void main(String[] args) {
    ??JFrame frame = new JFrame("Transparent Window");
    ??frame.setUndecorated(true);

    ??TransparentBackground bg = new TransparentBackground(frame);
    ??// bg.snapBackground();
    ??bg.setLayout(new BorderLayout());

    ??JPanel panel = new JPanel() {
    ???public void paintComponent(Graphics g) {
    ????g.setColor(Color.blue);
    ????Image img = new ImageIcon("d:/moon.gif").getImage();
    ????g.drawImage(img, 150, 150, null);
    ???//?g.drawLine(0,0, 600, 500);
    ???}
    ??};
    ??panel.setOpaque(false);
    ??JLabel jl=new JLabel(new ImageIcon("d:/moon.gif"));
    ??
    ??
    ??bg.add("North", jl);
    ??bg.add("Center", panel);

    ??frame.getContentPane().add("Center", bg);
    ??frame.pack();
    ??Toolkit tk = Toolkit.getDefaultToolkit();
    ??Dimension dim = tk.getScreenSize();
    ??frame.setSize((int) dim.getWidth(), (int) dim.getHeight());
    ??frame.setLocationRelativeTo(null);
    ??frame.show();
    ?}

    ?public void updateBackground() {
    ??try {
    ???Robot rbt = new Robot();
    ???Toolkit tk = Toolkit.getDefaultToolkit();
    ???Dimension dim = tk.getScreenSize();
    ???background = rbt.createScreenCapture(new Rectangle(0, 0, (int) dim
    ?????.getWidth(), (int) dim.getHeight()));
    ??} catch (Exception ex) {
    ???// p(ex.toString( ));
    ???// 此方法沒(méi)有申明過(guò),因?yàn)闊o(wú)法得知上下文。因?yàn)椴挥绊憟?zhí)行效果,先注釋掉它
    ???ex.printStackTrace();
    ??}
    ?}

    ?public void paintComponent(Graphics g) {
    ??Point pos = this.getLocationOnScreen();
    ??Point offset = new Point(-pos.x, -pos.y);
    ??g.drawImage(background, offset.x, offset.y, null);
    ?}
    }

    posted on 2007-01-15 14:29 aaabbb 閱讀(381) 評(píng)論(0)  編輯  收藏 所屬分類: Swing
    主站蜘蛛池模板: 亚洲国产91精品无码专区| 国产无人区码卡二卡三卡免费| 免费在线观看毛片| 激情小说亚洲色图| 可以免费观看一级毛片黄a| 美女被爆羞羞网站在免费观看| 国产又长又粗又爽免费视频| 国产午夜亚洲精品不卡| 亚洲精品国产精品乱码不卞| www免费黄色网| 久久精品国产亚洲麻豆| 久久午夜夜伦鲁鲁片无码免费| 亚洲AV无码精品色午夜果冻不卡| 久久久久久久久久国产精品免费| 一区二区三区亚洲| 一个人免费高清在线观看| 亚洲欧美日韩综合久久久久| 国产成人一区二区三区免费视频| 曰批全过程免费视频免费看| 亚洲一区二区视频在线观看| 国产偷伦视频免费观看| 亚洲毛片基地日韩毛片基地| 性感美女视频免费网站午夜| 曰批全过程免费视频免费看| 亚洲av无码成h人动漫无遮挡| 波多野结衣免费在线| 成人亚洲国产精品久久| 国产亚洲精品自在久久 | 国产一级淫片a免费播放口| 亚洲AV日韩AV永久无码久久 | 国产一区二区免费| 亚洲 欧洲 自拍 另类 校园| 免费中文字幕在线观看| 久久精品无码精品免费专区| 国产AV旡码专区亚洲AV苍井空| 亚洲AV无码一区二区三区在线观看| 久久久久久AV无码免费网站下载 | a免费毛片在线播放| 亚洲高清中文字幕| 免费中文字幕一级毛片| 亚洲视频免费在线播放|