2015-05-07 15 views
2

我是一名Java初學者。我正在構建一個屏幕截圖應用程序,其中您按PrtScn並捕獲屏幕。我希望這個屏幕圖像可以在FiledialogJFileChooser的幫助下保存。我不知道如何通過BufferedImageFiledialog框。在我的代碼中,我只是硬編碼保存位置。如何將BufferedImage傳遞給Filedialog以保存在Java中?

import java.awt.AWTException; 
import java.awt.Rectangle; 
import java.awt.Robot; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyListener; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 

import javax.imageio.ImageIO; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class SeeEyeEye { 
public static void main(String[] args) { 
JFrame aWindow = new JFrame("SeeEyeEye"); 
aWindow.setBounds(100, 310, 210, 110); 
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

JTextField typingArea = new JTextField(20); 
typingArea.addKeyListener(new KeyListener() { 


     public void keyTyped(KeyEvent e) { 
      displayInfo(e, "KEY TYPED: "); } 

    public void keyPressed(KeyEvent e) { 
      displayInfo(e, "KEY PRESSED: "); } 

    public void keyReleased(KeyEvent e) { 
      displayInfo(e, "KEY RELEASED: "); } 


    protected void displayInfo(KeyEvent e, String s) { 
    String keyString; 

     int keyCode = e.getKeyCode(); 
     if(keyCode==154) { 
       try { 

         Robot robot = new Robot(); 
          // Capture the screen shot of the area of the screen defined by the rectangle 
          BufferedImage bi=robot.createScreenCapture(new Rectangle(0,25,1366,744)); 
          ImageIO.write(bi, "png", new File("C://Users//Rao//Desktop//s.png")); 
       } 

        catch (AWTException e1) { 
         e1.printStackTrace(); } 
        catch (IOException e1) { 
         e1.printStackTrace(); } 

       } 
     else { System.out.println("try again");} 
     keyString = "key code = " + keyCode + " (" + KeyEvent.getKeyText(keyCode) + ")"; 
    System.out.println(keyString); 

    } 

}); 
aWindow.add(typingArea); 
aWindow.setVisible(true); 
} 
} 
+0

使用FileDialog的或JFileChooser,以獲取該文件的路徑/名稱,並使用該文件保存圖像。 – copeg

回答

3

使用FileDialog或JFileChooser來獲取用戶選擇的File(名稱和路徑)。然後用這個文件保存使用ImageIO圖像:

JFileChooser fileChooser = new JFileChooser(); 
int returnVal = fileChooser.showOpenDialog(null); 
if (returnVal == JFileChooser.APPROVE_OPTION){ 
    File file = fileChooser.getSelectedFile(); 
    ImageIO.write(image, 'jpg', file);//assuming you want a jpg, and BufferedImage variable name is image 
} 
+0

謝謝你們。這對我有效 – Scitech

0

您不會將'Buffered Image'傳遞給該文件。

FileDialog是要求用戶在哪裏存儲文件,並且一旦用戶選擇了位置和文件名,就將'Buffered Image'寫入該文件並保存。

相關問題