Swing: укажите имя файла для сохранения - PullRequest
0 голосов
/ 08 июля 2019

У меня при нажатии кнопки 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 голосов
/ 19 июля 2019

Если я правильно понял ваш вопрос, вы можете заменить эту строку:

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» или пропустить «.jpeg» в конце в текстовом поле имени файла JFileChooser или выбрать существующий файл. перезаписать - как в MS Word.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...