gui的屏幕截图,选择保存问题的位置

时间:2011-01-12 21:59:14

标签: java

我有一个程序可以截取我的gui截图。它会自动将.gif文件保存到eclipse项目目录中。我想要的是要求用户在哪里保存图像。基本上这样用户可以浏览文件目录并选择目录。 这是我的代码:

public void actionPerformed(ActionEvent event) {
try{
       String fileName = JOptionPane.showInputDialog(null, "Save file", 
null, 1);

       if (!fileName.toLowerCase().endsWith(".gif")){
         JOptionPane.showMessageDialog(null, "Error: file name must end with \".gif\".",
           null, 1);
       }
       else{             
         BufferedImage image = new BufferedImage(panel2.getSize().width, 
           panel2.getSize().height, BufferedImage.TYPE_INT_RGB);
         panel2.paint(image.createGraphics());
         ImageIO.write(image, "gif", new File(fileName));
         JOptionPane.showMessageDialog(null, "Screen captured successfully.",
null, 1);
       }
}
catch(Exception e){}

1 个答案:

答案 0 :(得分:2)

我会使用文件选择器对话框而不是JOptionPane。以下是tutorial的链接。

实施例: 首先,你必须在你的类中声明JFileChooser对象并初始化它。

public Class FileChooserExample{
   JFileChooser fc;
   FileChooserExample(...){
      fc = new JFileChooser();// as a parameter you can put path to initial directory to open
      ...
   }

现在创建另一种方法:

private String getWhereToSave(){
    int retVal = fc.showSaveDialog(..);
    if(retVal == JFileChooser.APPROVE_OPTION){
        File file = fc.getSelectedFile();
        return file.getAbsolutePath();
    }
    return null;
}

此方法返回用户选择的绝对路径。 retVal表示按下了哪个按钮(保存或取消)。如果按下Save,则处理所选文件。

然后你有了这个方法,你可以将它与你的代码结合起来。而不是这一行:

String fileName = JOptionPane.showInputDialog(null, "Save file", null, 1);

写:

String fileName = getWhereToSave();