package day001;
import java.awt.*;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.Border;
import javax.xml.ws.FaultAction;
import java.io.*;
import javax.imageio.*;
import java.awt.image.*;
public class CaptureScreen extends JFrame implements ActionListener {
private JRadioButton java,system;
private JButton start,cancel;
private JPanel d;
private BufferedImage get;
private JTabbedPane jtp;
private int index;
public CaptureScreen() {
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
e.printStackTrace();
}
initWindow();
initOther();
}
private void initOther(){
jtp=new JTabbedPane(JTabbedPane.TOP,JTabbedPane.SCROLL_TAB_LAYOUT);
}
private void initWindow(){
ImageIcon image = new ImageIcon("c://a.jpg");//c盘下的图片文件的引用
start=new JButton("开始截取");
start.setBackground(Color.yellow);
cancel=new JButton("最后退出");
cancel.setBackground(Color.green);
start.addActionListener(this);
cancel.addActionListener(this);
JPanel buttonJP=new JPanel();
d=new JPanel(new BorderLayout());
JLabel jl=new JLabel("公共展示区", JLabel.CENTER);
JLabel l1=new JLabel(image,JLabel.CENTER);
image=new ImageIcon(image.getImage().getScaledInstance(380, 160, Image.SCALE_DEFAULT));
l1.setIcon(image);
jl.setFont(new Font("黑体",Font.BOLD,27));
jl.setForeground(Color.LIGHT_GRAY);
d.add(jl,BorderLayout.SOUTH);
d.add(l1,BorderLayout.CENTER);
buttonJP.add(start);
buttonJP.add(cancel);
buttonJP.setBorder(BorderFactory.createTitledBorder("截图操作"));
JPanel jp=new JPanel();//放置两个单选按钮的面板
jp.add(java=new JRadioButton("java界面"));
jp.add(system=new JRadioButton("系统界面",true));
java.addActionListener(this);
system.addActionListener(this);
jp.setBorder(BorderFactory.createTitledBorder("界面风格"));
JPanel all=new JPanel();
all.add(jp);
all.add(buttonJP);
JPanel newall=new JPanel();
newall.add(all, BorderLayout.NORTH);
newall.setBorder(BorderFactory.createTitledBorder("工具栏"));
this.setTitle("截图小工具");
this.getContentPane().add(d,BorderLayout.CENTER);
this.getContentPane().add(newall,BorderLayout.NORTH);
this.setSize(400,330);
this.setLocationRelativeTo(null);
this.setVisible(true);
this.setAlwaysOnTop(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void updates(){
this.setVisible(true);
if(get!=null){
//如果索引是0,则表示一张图片都没有被加入过,
//则要清除当前的东西
if(index==0){
d.removeAll();
d.add(jtp,BorderLayout.CENTER);
}else{//否则的话,直接添加面板就可以了
//就什么都不用做了
}
PicPanel pic=new PicPanel(get);
jtp.addTab("图片"+(++index),pic);
jtp.setSelectedComponent(pic);
SwingUtilities.updateComponentTreeUI(d);
}
}
private void doStart(){
try{
this.setVisible(false);
Thread.sleep(500); //睡500毫秒是为了让主窗完全不见
Robot ro=new Robot(); // (通过本地操作)控制鼠标、键盘等实际输入源(java.awt)
Toolkit tk=Toolkit.getDefaultToolkit(); // AWT组件的抽象父类(java.awt)
Dimension di=tk.getScreenSize();
Rectangle rec=new Rectangle(0,0,di.width,di.height);
BufferedImage bi=ro.createScreenCapture(rec);
JFrame jf=new JFrame();
Temp temp=new Temp(jf,bi,di.width,di.height); // 自定义的Temp类的对象
jf.getContentPane().add(temp,BorderLayout.CENTER);
jf.setUndecorated(true);
jf.setSize(di);
jf.setVisible(true);
jf.setAlwaysOnTop(true);
} catch(Exception e){
e.printStackTrace();
}
}
/**
*保存图片的方法
*/
public void doSave(BufferedImage get){
try{
if(get==null){
JOptionPane.showMessageDialog(this
, "图片不能为空!!", "错误", JOptionPane.ERROR_MESSAGE);
return;
}
JFileChooser jfc=new JFileChooser("D:/");
jfc.addChoosableFileFilter(new GIFfilter());
jfc.addChoosableFileFilter(new BMPfilter());
jfc.addChoosableFileFilter(new JPGfilter());
jfc.addChoosableFileFilter(new PNGfilter());
int i=jfc.showSaveDialog(this);//显示保存路径
if(i==JFileChooser.APPROVE_OPTION){
File file=jfc.getSelectedFile();
String about="PNG";
String ext=file.toString().toLowerCase();
javax.swing.filechooser.FileFilter ff=jfc.getFileFilter();
if(ff instanceof JPGfilter){
String ns=ext+".jpg";
file=new File(ns);
about="JPG";
} else if(ff instanceof PNGfilter){
String ns=ext+".png";
file=new File(ns);
about="PNG";
}else if(ff instanceof BMPfilter){
String ns=ext+".bmp";
file=new File(ns);
about="BMP";
}else if(ff instanceof GIFfilter){
String ns=ext+".gif";
file=new File(ns);
about="GIF";
}
if(ImageIO.write(get,about,file)){
JOptionPane.showMessageDialog(this,"保存成功!");
} else
JOptionPane.showMessageDialog(this,"保存失败!");
}
} catch(Exception exe){
exe.printStackTrace();
}
}
public void doCopy(final BufferedImage image){
try{
if(get==null){
JOptionPane.showMessageDialog(this
,"图片不能为空!!","错误",JOptionPane.ERROR_MESSAGE);
return;
}
Transferable trans = new Transferable(){ // 内部类
public DataFlavor[] getTransferDataFlavors() {
return new DataFlavor[] { DataFlavor.imageFlavor };
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor)
throws UnsupportedFlavorException, IOException {
if(isDataFlavorSupported(flavor))
return image;
throw new UnsupportedFlavorException(flavor);
}
};
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(trans, null);
JOptionPane.showMessageDialog(this,"已复制到系统粘帖板!!");
}catch(Exception e){
e.printStackTrace();
JOptionPane.showMessageDialog(this
,"复制到系统粘帖板出错!!","错误",JOptionPane.ERROR_MESSAGE);
}
}
private void doClose
没有合适的资源?快使用搜索试试~ 我知道了~
基于Java的屏幕截图工具源代码.zip
共14个文件
class:10个
java:1个
classpath:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 169 浏览量
2022-06-15
08:50:52
上传
评论
收藏 21KB ZIP 举报
温馨提示
本次毕业设计是要用java技术,设计一款不依靠网络就可以单独进行截图的类似qq截图功能的软件。此软件具有捕捉图像的功能,捕捉图像的方式灵活,主要可以对整个屏幕的任何区域进行截图,可以手动画出任意区域,双击进行保存。截取的图像输出方式主要可以分为以文件形式输出和输出到剪切板。而软件具有捕捉光标,设置延时,图像文件的自动命名功能。 捕捉到的图像能够保存图像文件和复制到剪切板这几种方式输出,图像文件的自动命名功能又可以对文件保存时进行自动命名。捕捉图像的预览功能可以对捕捉完成后的图像显示预览窗口。图像保存目录及格式设置功能,可以对图像的保存路径以及保存格式进行设定,图像格式包括BMP,GIF,JPG,PNG等,在捕捉图片时还可以对多个图片分别截取,分多层界面显示已截图片。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的屏幕截图工具源代码.zip (14个子文件)
java截图小工具
.project 391B
bin
day001
CaptureScreen$PNGfilter.class 1KB
CaptureScreen$GIFfilter.class 1KB
CaptureScreen$Temp.class 4KB
CaptureScreen$PicPanel.class 2KB
CaptureScreen$JPGfilter.class 1KB
CaptureScreen$1.class 1KB
CaptureScreen$2.class 512B
CaptureScreen$BMPfilter.class 1KB
CaptureScreen.class 10KB
States.class 1KB
.settings
org.eclipse.jdt.core.prefs 598B
src
day001
CaptureScreen.java 16KB
.classpath 301B
共 14 条
- 1
资源评论
豆包程序员
- 粉丝: 1w+
- 资源: 3937
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功