import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class TestFrame extends JFrame implements ActionListener {
/**
*
*/
JFileChooser fileDialog=new JFileChooser("D:");
Container rootPane=new Container();
JTextField srcfie=new JTextField(12);
JButton srcbtn=new JButton("选择图片");
JTextField savefie=new JTextField(12);
JButton savebtn=new JButton("保存图片");
JButton jtbtn=new JButton("截图");
JLabel label=new JLabel("宽度:000 高度:000"); //显示图片大小
BufferedImage targetImg;//用来保存图片
ImgPanel imgPane=new ImgPanel(); //用来显示图片
public TestFrame(){
super("心林小屋-Java截图软件");
this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.init();
this.addLister();
}
public void init(){
Container rootPane=this.getContentPane();
rootPane.setLayout(new BorderLayout());
//设置文件对话框的过滤器
MyFileFilter mf=new MyFileFilter();
String[] str={".jpg",".gif",".bmp",".png"};
mf.addFilter(str,"选择文件(*.jpg,*.gif,*.bmp,*.png)");
this.fileDialog.addChoosableFileFilter(mf);
jtbtn.setMnemonic(KeyEvent.VK_A); //设置快捷建 ALT+A
JPanel pane1=new JPanel();
pane1.add(srcfie);
pane1.add(srcbtn);
pane1.add(savefie);
pane1.add(savebtn);
pane1.add(jtbtn);
pane1.add(label);
imgPane.setBorder(BorderFactory.createEtchedBorder());
rootPane.add(pane1,BorderLayout.NORTH);
rootPane.add(imgPane,BorderLayout.CENTER);
this.setSize(750, 600);
this.setLocation(300, 300);
this.show(true);
}
public void addLister(){
this.srcbtn.addActionListener(this);
this.savebtn.addActionListener(this);
this.jtbtn.addActionListener(this);
}
public static void main(String[] args) {
// ImageUtils iu=new ImageUtils();
// iu.saveTo(120,120,"d://Love.png", "d://2.jpg");
TestFrame tf=new TestFrame();
}
// 单击srcbtn 按钮
public void srcbtnClick(){
this.fileDialog.setDialogTitle("选择图片");
if(this.fileDialog.showOpenDialog(this)==0){
try {
this.srcfie.setText(this.fileDialog.getSelectedFile().getPath());
targetImg = ImageIO.read(this.fileDialog.getSelectedFile());
drawImg();
} catch (IOException e) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(this, "对不起,图片出现异常");
e.printStackTrace();
}
}
}
// 单击savebtn 按钮
public void savebtnClick(){
if(targetImg==null){
JOptionPane.showMessageDialog(this, "对不起,暂无图片可以保存");
return;
}
this.fileDialog.setDialogTitle("保存图片");
if(this.fileDialog.showSaveDialog(this)==0){
try {
File f=fileDialog.getSelectedFile();
if(f.exists()){
int i=JOptionPane.showConfirmDialog(this, "该文件已存在,是否覆盖此文件!!!","友情提示",JOptionPane.OK_OPTION);
if(i!=0){
return;
}
}
String path=f.getPath();
String str=path.substring(path.lastIndexOf("."),path.length());
if(!(str.equals(".jpg") || str.equals(".gif") || str.equals(".bmp") || str.equals(".png"))){
f=new File(f.getPath()+".jpg");
}
ImageIO.write(targetImg, "jpg",f);
this.savefie.setText(f.getPath());
JOptionPane.showMessageDialog(this, "图片保存成功");
} catch (Exception e) {
JOptionPane.showMessageDialog(this, "对不起,图片保存失败");
e.printStackTrace();
}
}
}
//
public void drawImg(){
int width=targetImg.getWidth();
int height=targetImg.getHeight();
if(width>2000 ||height>2000){
JOptionPane.showMessageDialog(this, "对不起,图片太大");
return;
}
this.label.setText("宽度:"+width+" 高度:"+height);
imgPane.mydraw(targetImg);
}
//截图按钮事件
public void jtbtnClick(){
try {
this.setVisible(false);
Thread.sleep(100);
JTFrame jt=new JTFrame(this);
jt.setVisible(true);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 事件方法
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(srcbtn)){
this.srcbtnClick();
}else if(e.getSource().equals(savebtn)){
this.savebtnClick();
}else if(e.getSource().equals(jtbtn)){
jtbtnClick();
}
}
}
class ImgPanel extends JPanel{
private BufferedImage img;
public void paintComponent(Graphics g) {
// TODO Auto-generated method stub
super.paintComponent(g);
if(img!=null){
int width=this.getWidth();
int heigth=this.getHeight();
BufferedImage temp=Resize.resize(img,width,heigth);
int imgw=temp.getWidth();
int imgh=temp.getHeight();
int x=(width/2)-(imgw/2);
int y=(heigth/2)-(imgh/2);
g.drawImage(temp,x, y,x+imgw,y+imgh,0,0,imgw,imgh, null);
}
}
public void mydraw(BufferedImage image){
this.img=image;
this.repaint();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
很牛的Java截图工具源码
共5个文件
java:4个
jar:1个
5星 · 超过95%的资源 需积分: 18 398 下载量 187 浏览量
2009-08-28
23:11:12
上传
评论 5
收藏 14KB RAR 举报
温馨提示
注:截图.jar 只能在JDK1.5的版本运行,1.6 截图的时候画线不显示。原因 我也不知道 截图.jar 运行文件 (需要安装JDK1.5) *******源代码******** TestFrame.java //程序主窗口 JTFrame.java //截图窗口 MyFileFilter.java //文件过滤器 Resize.java //处理图片显示合适大小 (此代码网上抄的,并非本人 所编写,只是将代码稍作修改) *******相关技术******** *.FileFilter 自定义文件过滤器 *.屏幕截取 *.图片居中显示 *.图片显示是大小 *******使用方法******** 1.打开Eclipse/MyEclipse 2.新建JavaProject 3.将所有*.java文件文件复制到项目下 4.测试就行了 *******关于******** 作者:林 QQ:362217990 BLog:http://hi.baidu.com/362217990
资源推荐
资源详情
资源评论
收起资源包目录
.rar (5个子文件)
JTFrame.java 4KB
Resize.java 2KB
截图.jar 9KB
TestFrame.java 5KB
MyFileFilter.java 2KB
共 5 条
- 1
JJXI11
- 粉丝: 7
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页