zoukankan      html  css  js  c++  java
  • 测试客户端的使用

    插入源代码:(以下代码只是我用来测试cnblogs推荐的客户端中添加源代码的方法,效果还是比在线差了点,内容请忽略!!!!!)

    /*
    * To change this license header, choose License Headers in Project Properties.
    * To change this template file, choose Tools | Templates
    * and open the template in the editor.
    */
    package com.silianbo;

    /**
    *
    * @author silianbo
    */
    import java.awt.AWTException;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Graphics;
    import java.awt.Image;
    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.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.image.BufferedImage;
    import java.awt.image.RescaleOp;
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JToolBar;
    import javax.swing.JWindow;
    import javax.swing.filechooser.FileNameExtensionFilter;
    import javax.swing.filechooser.FileSystemView;
    public class ScreenShot {
    public static void main(String[] args) {

      EventQueue.invokeLater(() -> {
          try {
              ScreenShotWindow ssw=new ScreenShotWindow();
              ssw.setVisible(true);
          } catch (AWTException e) {
          }
      });
    }
    }
    /*
    * 截图窗口
    */
    class ScreenShotWindow extends JWindow
    {
    private int orgx, orgy, endx, endy;
        private BufferedImage image=null;
        private BufferedImage tempImage=null;
        private BufferedImage saveImage=null;

        private ToolsWindow tools=null;

    public ScreenShotWindow() throws AWTException{
       //获取屏幕尺寸
       Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
       this.setBounds(0, 0, d.width, d.height);

       //截取屏幕
       Robot robot = new Robot();
       image = robot.createScreenCapture(new Rectangle(0, 0, d.width,d.height));

       this.addMouseListener(new MouseAdapter() {
        @Override
       public void mousePressed(MouseEvent e) {
        //鼠标松开时记录结束点坐标,并隐藏操作窗口
                 orgx = e.getX();
                 orgy = e.getY();

                 if(tools!=null){
                  tools.setVisible(false);
                 }
       }
       @Override
       public void mouseReleased(MouseEvent e) {
        //鼠标松开时,显示操作窗口
        if(tools==null){
         tools=new ToolsWindow(ScreenShotWindow.this,e.getX(),e.getY());
        }else{
         tools.setLocation(e.getX(),e.getY());
        }
        tools.setVisible(true);
        tools.toFront();
       }
      });

       this.addMouseMotionListener(new MouseMotionAdapter() {

       @Override
       public void mouseDragged(MouseEvent e) {
        //鼠标拖动时,记录坐标并重绘窗口
                    endx = e.getX();
                    endy = e.getY();

                    //临时图像,用于缓冲屏幕区域放置屏幕闪烁
                    Image tempImage2=createImage(ScreenShotWindow.this.getWidth(),ScreenShotWindow.this.getHeight());
                    Graphics g =tempImage2.getGraphics();
                    g.drawImage(tempImage, 0, 0, null);
                    int x = Math.min(orgx, endx);
                    int y = Math.min(orgy, endy);
                    int width = Math.abs(endx - orgx)+1;
                    int height = Math.abs(endy - orgy)+1;
                    // 加上1防止width或height0
                    g.setColor(Color.BLUE);
                    g.drawRect(x-1, y-1, width+1, height+1);
                    //减1加1都了防止图片矩形框覆盖掉
                    saveImage = image.getSubimage(x, y, width, height);
                    g.drawImage(saveImage, x, y, null);

                    ScreenShotWindow.this.getGraphics().drawImage(tempImage2,0,0,ScreenShotWindow.this);
       }
      });
    }

        @Override
        public void paint(Graphics g) {
            RescaleOp ro = new RescaleOp(0.8f, 0, null);
            tempImage = ro.filter(image, null);
            g.drawImage(tempImage, 0, 0, this);
        }
        //保存图像到文件
    public void saveImage() throws IOException {
      JFileChooser jfc=new JFileChooser();
      jfc.setDialogTitle("保存");

      //文件过滤器,用户过滤可选择文件
      FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG", "jpg");
      jfc.setFileFilter(filter);

      //初始化一个默认文件(此文件会生成到桌面上)
      SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss");
         String fileName = sdf.format(new Date());
         File filePath = FileSystemView.getFileSystemView().getHomeDirectory();
         File defaultFile = new File(filePath + File.separator + fileName + ".jpg");
         jfc.setSelectedFile(defaultFile);

      int flag = jfc.showSaveDialog(this);
      if(flag==JFileChooser.APPROVE_OPTION){
       File file=jfc.getSelectedFile();
       String path=file.getPath();
       //检查文件后缀,放置用户忘记输入后缀或者输入不正确的后缀
       if(!(path.endsWith(".jpg")||path.endsWith(".JPG"))){
        path+=".jpg";
       }
       //写入文件
       ImageIO.write(saveImage,"jpg",new File(path));
       System.exit(0);
      }
    }
    }
    /*
    * 操作窗口
    */
    class ToolsWindow extends JWindow
    {
    private final ScreenShotWindow parent;

    public ToolsWindow(ScreenShotWindow parent,int x,int y) {
      this.parent=parent;
      this.init();
      this.setLocation(x, y);
      this.pack();
      this.setVisible(true);
    }

    private void init(){

      this.setLayout(new BorderLayout());
      JToolBar toolBar=new JToolBar("Java 截图");

      //保存按钮
      JButton saveButton=new JButton(new ImageIcon("images/save.gif"));
      saveButton.addActionListener((ActionEvent e) -> {
          try {
              parent.saveImage();
          } catch (IOException e1) {
              e1.printStackTrace();
          }
      });
      toolBar.add(saveButton);

      //关闭按钮
      JButton closeButton=new JButton(new ImageIcon("images/close.gif"));
      closeButton.addActionListener((ActionEvent e) -> {
          System.exit(0);
      });
      toolBar.add(closeButton);

      this.add(toolBar,BorderLayout.NORTH);
    }
    }

  • 相关阅读:
    你所不知道的mfc…mfc项目索引 &mfc调优指南 &mfc vc添加添加子功能指南
    Cu 大彻大悟内存管理 mm (update 0410)
    [转]Linux iostat监测IO状态
    linux virtual memory layout by moniskiller upload [读书笔记]
    河畔找到的 面经笔经
    【转】Linux本地磁盘(硬盘)介绍
    读写UTF8、Unicode文件
    codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
    DB2表信息以及字段信息的表
    iBatis.NET获取resultMap相关数据
  • 原文地址:https://www.cnblogs.com/silianbo/p/4638424.html
Copyright © 2011-2022 走看看