?? framecapture.java
字號:
/*
* FrameCapture.java
*
* Created on 2007年7月24日, 下午3:36
*/
package capturescreen;
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;
import java.awt.AWTException;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
/**
*
* @author linda
*/
public class FrameCapture extends javax.swing.JFrame {
/** Creates new form FrameCapture */
public FrameCapture() {
initComponents();
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" 生成的代碼 ">//GEN-BEGIN:initComponents
private void initComponents() {
jScrollPaneGlobe = new javax.swing.JScrollPane();
jLabelShow = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenuAction = new javax.swing.JMenu();
jMenuItemCapture = new javax.swing.JMenuItem();
jMenuItemSaveAs = new javax.swing.JMenuItem();
jMenuItemClear = new javax.swing.JMenuItem();
jMenuItemExit = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jScrollPaneGlobe.setViewportView(jLabelShow);
jMenuAction.setText("\u64cd\u4f5c");
jMenuItemCapture.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_P, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
jMenuItemCapture.setText("\u5f00\u59cb\u622a\u5c4f");
jMenuItemCapture.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemCaptureActionPerformed(evt);
}
});
jMenuAction.add(jMenuItemCapture);
jMenuItemSaveAs.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
jMenuItemSaveAs.setText("\u53e6\u5b58\u4e3a");
jMenuItemSaveAs.setEnabled(false);
jMenuItemSaveAs.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemSaveAsActionPerformed(evt);
}
});
jMenuAction.add(jMenuItemSaveAs);
jMenuItemClear.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_C, java.awt.event.InputEvent.SHIFT_MASK | java.awt.event.InputEvent.CTRL_MASK));
jMenuItemClear.setText("\u6e05\u7a7a");
jMenuItemClear.setEnabled(false);
jMenuItemClear.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemClearActionPerformed(evt);
}
});
jMenuAction.add(jMenuItemClear);
jMenuItemExit.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_X, java.awt.event.InputEvent.CTRL_MASK));
jMenuItemExit.setText("\u9000\u51fa");
jMenuItemExit.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jMenuItemExitActionPerformed(evt);
}
});
jMenuAction.add(jMenuItemExit);
jMenuBar1.add(jMenuAction);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPaneGlobe, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPaneGlobe, javax.swing.GroupLayout.DEFAULT_SIZE, 279, Short.MAX_VALUE)
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void jMenuItemExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemExitActionPerformed
System.exit(0); //退出程序
}//GEN-LAST:event_jMenuItemExitActionPerformed
private void jMenuItemClearActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemClearActionPerformed
this.jLabelShow.setIcon(null); //將jLabelShow中的圖像清空
this.jMenuItemSaveAs.setEnabled(false);
this.jMenuItemClear.setEnabled(false);
this.jMenuItemCapture.setEnabled(true);
}//GEN-LAST:event_jMenuItemClearActionPerformed
private void jMenuItemSaveAsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemSaveAsActionPerformed
this.saveImage(); //調用saveIcon方法保存當前屏幕圖像
}//GEN-LAST:event_jMenuItemSaveAsActionPerformed
private void jMenuItemCaptureActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMenuItemCaptureActionPerformed
Image captureImage=this.createImage(); //截取當前屏幕圖像
//將圖像在jLabelShow中顯示
jLabelShow.setIcon(new ImageIcon(tempImage=this.createImage()));
this.jMenuItemSaveAs.setEnabled(true);
this.jMenuItemClear.setEnabled(true);
this.jMenuItemCapture.setEnabled(false);
}//GEN-LAST:event_jMenuItemCaptureActionPerformed
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FrameCapture().setVisible(true);
}
});
}
private JPEGImageEncoder encoder = null;
private JFileChooser fileChooser = new JFileChooser()
;
private Image tempImage = null;
private Image createImage() {
try {//截圖代碼開始
Image tempLocalImage=null;
Robot robot=new Robot();
Dimension dimension= Toolkit.getDefaultToolkit().getScreenSize();
Rectangle scrRect=new Rectangle(0,0,dimension.width,dimension.height);
tempLocalImage=robot.createScreenCapture(scrRect);
//截圖代碼結束
return tempLocalImage;
} catch (AWTException ex) {
ex.printStackTrace();
}
return null;}
public void saveImage() {
try
{
int saved=fileChooser.showSaveDialog(this);
if(saved==JFileChooser.APPROVE_OPTION)
{
//獲取要設置的文件名(包括路徑)
File saveFileName=fileChooser.getSelectedFile();
//獲取要保存文件的名字
String fileName=new String(saveFileName.getPath()+".jpg");
//1.首先創建一個輸出流
FileOutputStream fileOutPut=new FileOutputStream(fileName);
//2.然后把輸出流用JPEG編碼器進行包裹,其實就是把輸出流連接到編碼器
encoder=JPEGCodec.createJPEGEncoder(fileOutPut);
//把BufferedImage對象進行編碼
encoder.encode((BufferedImage) tempImage);
fileOutPut.flush();
fileOutPut.close();
}
}
catch(Exception ea)
{
ea.printStackTrace();
} }
// 變量聲明 - 不進行修改//GEN-BEGIN:variables
javax.swing.JLabel jLabelShow;
javax.swing.JMenu jMenuAction;
javax.swing.JMenuBar jMenuBar1;
javax.swing.JMenuItem jMenuItemCapture;
javax.swing.JMenuItem jMenuItemClear;
javax.swing.JMenuItem jMenuItemExit;
javax.swing.JMenuItem jMenuItemSaveAs;
javax.swing.JScrollPane jScrollPaneGlobe;
// 變量聲明結束//GEN-END:variables
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -