测试客户端的使用
来源:互联网 发布:韩国有什么软件 编辑:程序博客网 时间:2024/06/06 19:45
/*
* 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);
}
}
- 测试客户端的使用
- 使用WCF 测试客户端测试你的WCF服务
- 测试使用zookeeper的c客户端的情况
- 【WCF】使用WCF测试客户端
- 接口的客户端测试代码
- socket的客户端测试代码
- 使用eclipse建立一个axis客户端测试
- redis JAVA客户端(Jedis)测试使用
- Redis安装部署&&客户端管理工具使用&&.net客户端测试
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 使用socket的Linux上的C语言helloworld多线程服务器和客户端测试程序
- 在tomcat中测试ssl的时候使用openssl,需要生成一个客户端证书
- 使用SOCKET API写的客户端与服务端测试程序(C语言)
- 淘淘商城系列——使用FastDFS-Client客户端进行上传图片的测试
- 商城项目实战20:使用FastDFS-Client客户端进行上传图片的测试
- DatagramPacket与DatagramSocket
- 『脉脉体验』
- StringBuffer的equals方法
- MySql 不存在则插入,存在则更新或忽略
- InetAddress相关笔记
- 测试客户端的使用
- 基于java网络聊天室---前言
- Java Applet draw a snowman
- 【猪八戒】- 2017年在线笔试“获取HTML标签”
- 基于java网络聊天室--服务器端
- 基于java网络聊天室--客户端
- 基于java网络聊天室--截图实现
- Java中13种设计模式汇总
- jzoj5363【NOIP2017提高A组模拟9.14】生命之树 trie+启发式合并