我有一个程序可以截取我的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){}
答案 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();