- 浏览: 78726 次
- 性别:
- 来自: 湖南
最新评论
-
lysvanilla:
补充: 对于action返回input的补充,查阅源代 ...
No result defined for action and result input
知识点:
1.Swing (使用eclipse插件Jigloo开发)
2.JPEG编码器
package chapter01.sample01; import java.awt.Dimension; 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.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import javax.swing.ImageIcon; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JScrollPane; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import javax.swing.WindowConstants; import com.sun.image.codec.jpeg.JPEGCodec; import com.sun.image.codec.jpeg.JPEGImageEncoder; @SuppressWarnings("restriction") public class CaptureScreen extends javax.swing.JFrame { private static final long serialVersionUID = -2726631763599696338L; private JMenuBar jMenuBar1; private JMenuItem jMenuItemClear; private JScrollPane jScrollPaneGloba; private JLabel jLabelShow; private JMenuItem jMenuItemExit; private JMenuItem jMenuItemSaveAs; private JMenuItem jMenuItemCapture; private JMenu jMenu1; private JFileChooser fileChooser = new JFileChooser();// 文件选择器 private JPEGImageEncoder encoder = null;// JPEG编码器 private Image tempImage = null; /** * Auto-generated main method to display this JFrame */ public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { CaptureScreen inst = new CaptureScreen(); inst.setLocationRelativeTo(null); inst.setVisible(true); } }); } public CaptureScreen() { super(); initGUI(); } private void initGUI() { try { setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); this.setTitle("CaptrueScreenTool"); getContentPane().setLayout(null); { jScrollPaneGloba = new JScrollPane(); getContentPane().add(jScrollPaneGloba); // jScrollPaneGloba.setBounds(0, 0, 384, 234);//不能这样子,否则还是窗体扩大了就会显示不全 jScrollPaneGloba.setBounds(0, 0, Toolkit.getDefaultToolkit().getScreenSize().width, Toolkit.getDefaultToolkit().getScreenSize().height); { jLabelShow = new JLabel(); jScrollPaneGloba.setViewportView(jLabelShow);// 面板的Viewport属性 } } { jMenuBar1 = new JMenuBar(); setJMenuBar(jMenuBar1); jMenuBar1.setSize(384, 30); jMenuBar1.setPreferredSize(new java.awt.Dimension(384, 30)); { jMenu1 = new JMenu(); jMenuBar1.add(jMenu1); jMenu1.setText("\u64cd\u4f5c"); { jMenuItemCapture = new JMenuItem(); jMenu1.add(jMenuItemCapture); jMenuItemCapture.setText("\u622a\u5c4f"); jMenuItemCapture.setAccelerator(KeyStroke.getKeyStroke("shift ctrl pressed P")); jMenuItemCapture.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jMenuItemCaptureActionPerformed(evt); } }); } { jMenuItemSaveAs = new JMenuItem(); jMenu1.add(jMenuItemSaveAs); jMenuItemSaveAs.setText("\u4fdd\u5b58"); jMenuItemSaveAs.setAccelerator(KeyStroke.getKeyStroke("shift pressed S")); jMenuItemSaveAs.setEnabled(false); jMenuItemSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { saveImage(); } }); } { jMenuItemClear = new JMenuItem(); jMenu1.add(jMenuItemClear); jMenuItemClear.setText("\u6e05\u7a7a"); jMenuItemClear.setAccelerator(KeyStroke.getKeyStroke("shift ctrl pressed C")); jMenuItemClear.setEnabled(false); jMenuItemClear.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jMenuItemClearActionPerformed(evt); } }); } { jMenuItemExit = new JMenuItem(); jMenu1.add(jMenuItemExit); jMenuItemExit.setText("\u9000\u51fa"); jMenuItemExit.setAccelerator(KeyStroke.getKeyStroke("shift ctrl pressed X")); jMenuItemExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { jMenuItemExitActionPerformed(evt); } }); } } } pack(); setSize(400, 300); } catch (Exception e) { e.printStackTrace(); } } private void jMenuItemCaptureActionPerformed(ActionEvent evt) { tempImage = this.createImage(); jLabelShow.setIcon(new ImageIcon(tempImage)); jMenuItemCapture.setEnabled(false); jMenuItemSaveAs.setEnabled(true); jMenuItemClear.setEnabled(true); } // 截屏 :这里是重点,保存图片 private Image createImage() { try { Image tempLocalImage = null; Robot robot = new Robot(); Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); Rectangle scrRectangle = new Rectangle(0, 0, dimension.width, dimension.height); tempLocalImage = robot.createScreenCapture(scrRectangle); return tempLocalImage; } catch (Exception e) { e.printStackTrace(); } return null; } // 保存 :这里是保存图片的代码 private void saveImage() { try { int save = fileChooser.showSaveDialog(this);// Pops up a "Save File" file chooser dialog. if (save == JFileChooser.APPROVE_OPTION) {// 点击了OK(或者Yes) // 获取要设置的文件名(包括路径) File saveFileName = fileChooser.getSelectedFile(); // 获取要保存文件的名字 String fileName = new String(saveFileName.getPath() + ".jpg");// abstract pathname // 1.首先创建一个输出流 FileOutputStream fileOutputStream = new FileOutputStream(fileName); // 2.然后把输出流用JPEG编码器进行包裹,其实就是把输出流连接到编码器 encoder = JPEGCodec.createJPEGEncoder(fileOutputStream); // 把BufferedImage对象进行编码 encoder.encode((BufferedImage) tempImage); fileOutputStream.flush();// 清空缓存 fileOutputStream.close(); } } catch (Exception e) { e.printStackTrace(); } } // 清空 private void jMenuItemClearActionPerformed(ActionEvent evt) { jLabelShow.setIcon(null); jMenuItemCapture.setEnabled(true); jMenuItemClear.setEnabled(false); jMenuItemSaveAs.setEnabled(false); } // 退出 private void jMenuItemExitActionPerformed(ActionEvent evt) { System.exit(0); } }
显示效果:
截出来的图片:当时的整个屏幕的图片
<script type="text/javascript"></script>
发表评论
-
Java实例开发01-02 文本阅读器
2011-09-09 16:04 1069这次采用的是SWT开发的,利用了Jigloo插件 知识 ... -
Java删除文件和目录
2011-09-08 15:02 820package book.io; ... -
实例解析:在Java语言中对文件操作大全
2011-09-07 22:50 852一.获得控制台用户 ... -
JAVA的文件操作
2011-09-07 22:30 89611.3 I/O类使用 由于在IO ... -
Java SE 学习笔记04 代码
2011-09-01 10:00 792普通内部类,静态内部类代码 Java代码 ... -
Java SE 学习笔记04
2011-09-01 10:00 851★内部类(inner class)内部类又称嵌套类,是指定 ... -
Java SE 学习笔记03 代码
2011-09-01 09:59 761关于父类与子类在属性 ... -
Java SE 学习笔记03
2011-09-01 09:59 753面向对象基础 ★面向对象强调数据结构第一,算法第二 ... -
Java SE 学习笔记02 代码
2011-09-01 09:58 752数组相关API Java代码 / ... -
Java SE 学习笔记02
2011-09-01 09:57 701★数组JAVA中的数组是一个具有相同类型元素的有序集合,数 ... -
Java SE 学习笔记01 代码
2011-09-01 09:56 862Java中的基本数据类型 Java代码 ... -
Java SE 学习笔记01
2011-09-01 09:55 1542★JAVA的特性 Simple简单(去掉了C++中许多 ...
相关推荐
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
《Java开发实战1200例》分为I、II两卷共计1200个例子,包括了开发中各个方面最常用的实例,是目前市场上实例最全面的开发类图书;书中实例来源于多位工程师的多年积累,具有很强的实用性。 本书是第II卷,以开发...
|--异常之UncaughtExceptionHandler全局捕获处理 |--异步任务AsyncTask的用法 |--异步任务的自定义 |--快捷方式增删查 |--手势识别器GestureDetector的用法 |--拍照之调用系统相机并显示及保存 |--拨打电话 |--按健...
9.24、运用JAVA MAIL包实现发GMAIL邮件 230 9.26、ANDROID键盘响应 236 9.27、后台监听某个按键 238 9.28、VECTOR用法 239 9.29、CURSOR 242 9.30、把一个字符串写进文件 244 9.31、把文件内容读出到一个字符串 245 ...
1.2 安装开发工具包 5 1.2.1 下载JDK 5 1.2.2 安装JDK 6 1.2.3 安装后Java目录的解读 7 1.3 学会使用API 7 1.4 第一个Java程序 8 1.4.1 开发源代码 8 1.4.2 编译运行 9 1.5 小结 11 第2章 基本...
| 解决:控制台--(工具-->JavaScript控制台或F12) | 包含错误信息;指向错误位置的超链接 |--③.打桩:在指定变量位置输出变量或对象的内容 console.log(内容);-->出现在控制台-->日志 4.变量:js中...
2.3. 旋转屏幕重新加载 Acitivity .......... 33 第 3 章 第三章 ................... 40 3.1. 缓冲界面 ......................................... 40 3.1.1. Demo1 .................................... 40 ...
另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时,他会打出几百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我...
9.24、运用JAVA MAIL包实现发GMAIL邮件 230 9.26、ANDROID键盘响应 236 9.27、后台监听某个按键 238 9.28、VECTOR用法 239 9.29、CURSOR 242 9.30、把一个字符串写进文件 244 9.31、把文件内容读出到一个字符串 245 ...
\17.3.4 QtDBus应用实例 432 \17.4 小结 441 \第18章 Qt插件 442 \18.1 Qt插件开发基础 442 \18.2 Qt设计器插件 443 \18.2.1 使用Scratchpad 443 \18.2.2 提升自定义窗口部件 444 \18.2.3 Qt设计器插件开发 444 \...
\17.3.4 QtDBus应用实例 432 \17.4 小结 441 \第18章 Qt插件 442 \18.1 Qt插件开发基础 442 \18.2 Qt设计器插件 443 \18.2.1 使用Scratchpad 443 \18.2.2 提升自定义窗口部件 444 \18.2.3 Qt设计器插件开发 ...