Форсирование ".png" в диалоге сохранения JFileChooser - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь получить автоматический .png за именем файла в JFileChooser.

Как мне это сделать?

public class Capture {

  public static BufferedImage getScreenShot(Component component) {
    BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
    component.paint(image.getGraphics());
    return image;
  }

  public static void getSaveSnapShot(Component component, String fileName) throws Exception {
    BufferedImage img = getScreenShot(component);

    JFileChooser jfc = new JFileChooser();
    jfc.addChoosableFileFilter(new FileNameExtensionFilter("Image files",new String[] { "png" }));
    int retVal = jfc.showSaveDialog(null);

    if(retVal==JFileChooser.APPROVE_OPTION) {
      File f = jfc.getSelectedFile();
      String test = f.getAbsolutePath();
      ImageIO.write(img,"png",new File(test));
    }
  }
}

Ответы [ 2 ]

0 голосов
/ 07 июня 2019

У вас также есть возможность добавить фильтр, разрешающий только некоторые типы файлов.

fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.pdf", "pdf"));
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("*.txt", "txt"));

Это может помочь, если вы хотите быть уверены, что у вас нет поврежденных файлов при добавлении вручную их типа.

0 голосов
/ 01 февраля 2019

Просто проверьте, заканчивается ли путь png.Если не добавить это:

...
String test = f.getAbsolutePath();
if (!test.endsWith(".png")) {
    test = test + ".png";
}
...
...