测试客户端的使用

插入源代码:

/*
* 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);
}
}

时间: 2024-11-22 17:15:18

测试客户端的使用的相关文章

使用WCF测试客户端 z

http://blog.csdn.net/u013036274/article/details/50570989 [是什么] WCF测试客户端(WCF Test Client)是一个用来测试WCF服务程序的调试工具,能够使开发WCF服务更加方便. [打开方法] 有四种打开方式 1.找到Vs的安装路径,找到Common7\IDE\WcfTestClient.exe,双击打开.如图 2.在Visual Studio命令提示中输入“WcfTestClient”回车即可. 3.打开VS,项目--属性-调

启用WCF测试客户端的相关技巧

在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到其所在路径(Visual Studio安装路径\Common7\IDE\WcfTestClient.exe)双击打开.第二种方法是在“Visual Studio命令提示(Visual Studio Command Prompt)”中输入“WcfTestClient”命令,如图1所示: 图1 Visual Studio不同的项目模板,提供了不同的WCF测试客户端启动方法.下面这张表格是Visual Studio 2010

VS自带WCF测试客户端简单介绍

在目前的二次开发项目中,一些信息是放在客户那里的,只给你一个服务地址,不知道具体有什么方法,每次想调用一个服务不知道能不能实现目前的需求,只能测试.写个测试程序真的划不来,占用时间不说,而且你忙了一上午,发现那个服务,并不是你想要的.只能说白忙了......下面简单介绍一下,从同事那里学到的怎么使用VS自带的测试客户端.操作很简单,但很实用.知道这个的,就不用说了,这篇文章就是帮助那些不知道的小伙伴的...... 一个简单的WCF服务端: 契约: 1 using System; 2 using

使用VS自带WCF测试客户端

VS自带WCF测试客户端. 打开VS2015 开发人员命令提示 输入:wcftestclient,回车 当然,可以看到VS2015 开发人员命令提示知道,当前路径在C:\Program Files (x86)\Microsoft Visual Studio 14.0,打开这个路径,搜索wcftestclient. 显示wcftestclient的路径在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE 原文地址:http

WCF添加测试客户端

WCF使用WCF测试客户端 转自:https://blog.csdn.net/u013036274/article/details/50570989 [是什么] ? ? ? ?WCF测试客户端(WCF Test Client)是一个用来测试WCF服务程序的调试工具,能够使开发WCF服务更加方便. [打开方法] ? ? ? 有四种打开方式 1.找到Vs的安装路径,找到Common7\IDE\WcfTestClient.exe,双击打开.如图 2.在Visual Studio命令提示中输入"WcfT

nodejs socket长连接服务端和测试客户端

想用nodejs写个简单的游戏服务器,正在研究中... 服务区代码server.js var net = require('net'); var HOST = '127.0.0.1'; var PORT = 8080; var chatServer = net.createServer(); var clientList = []; chatServer.on('connection', function(client){ client.name = client.remoteAddress +

测试客户端

package headfirst.factory.pizzas.pizzafactory; import headfirst.factory.pizzas.pizza.CheesePizza; import headfirst.factory.pizzas.pizza.ClamPizza; import headfirst.factory.pizzas.pizza.PepperoniPizza; import headfirst.factory.pizzas.pizza.Pizza; impo

Selinum 这样的个人版测试 客户端 你是否喜欢?

数据来源:execl or xml 命令格式: Command Target Value get http://www.baidu.com 核心:Selinum 特色:debug模式,find查找元素 结果:执行日志

python一个简单的websocket测试客户端

朋友发的,之前在网上一直没找着,先记着 #!/usr/bin/env python import asyncio import websockets import json async def test_ws_quote(): async with websockets.connect('ws://192.168.0.205:8888/quote/quote') as websocket: req = {"protocol":"history_req",'code'