Swing:提供要保存的文件名

时间:2019-07-07 23:10:21

标签: java swing

单击时,我有一个save按钮,它将打开一个对话框,我可以选择保存图像的位置。

            save.addActionListener(new ActionListener() {

                    public void actionPerformed(ActionEvent e) {

                        JFileChooser chooser = new JFileChooser();
                        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
                        chooser.showSaveDialog(null);

                        String location = chooser.getSelectedFile().toString();
                        demo.saveImageToLocalDisk(jFrame, location);
                    }
                });

然后,整个JFrame将保存在磁盘的某个位置。代码

private void saveImageToLocalDisk(JFrame panel, String location) {

        BufferedImage image = null;

        try {
            image = new Robot().createScreenCapture(panel.bounds());
        } catch (AWTException e1) {
            e1.printStackTrace();
        }

        Graphics2D graphics2D = image.createGraphics();
        panel.paint(graphics2D);

        try {
            ImageIO.write(image, "jpeg", new File(location + "/Graphics.jpeg"));
        } catch (Exception e) {
            System.out.println("error");
        }
    }

我也想提供文件名。我该如何实现?

1 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则可以替换以下行:

chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

与此一起

chooser.setFileFilter(new FileNameExtensionFilter("JPEG-Datei", "jpeg"));

为了只允许选择.jpeg文件并更改此行

 ImageIO.write(image, "jpeg", new File(location + "/Graphics.jpeg"));

对此

 ImageIO.write(image, "jpeg", new File(location));

此外,您需要添加

if (!location.endsWith(".jpeg")
   location += ".jpeg";

ImageIO.write命令之前,以便如果用户未在对话框中键入.jpeg扩展名。

目前,您只允许用户在对话框中选择文件夹,而不是文件。如果您进行了上述更改,则用户可以进入他要使用的文件夹并键入“ MyGreatScreenCaptureHaha.jpeg”,或者在JFileChooser的文件名文本框中末尾保留“ .jpeg”,或者选择一个现有文件要覆盖-就像在MS Word中一样。