У меня есть проект ImageViewer, и я пытаюсь создать метод для восстановления исходного изображения - PullRequest
0 голосов
/ 24 марта 2020

Я могу использовать метод, чтобы вернуть изображение в исходное состояние после применения фильтров, встроенных в мою программу ОДИН РАЗ, после чего всякий раз, когда я нажимаю кнопку JButton, связанную с методом восстановления, он ничего не делает. Вот то, что я считаю всем соответствующим кодом:

private OFImage originalImage;
private OFImage currentImage;

private void openFile()
    {
        int returnVal = fileChooser.showOpenDialog(frame);

        if(returnVal != JFileChooser.APPROVE_OPTION) {
            return;  // cancelled
        }
        File selectedFile = fileChooser.getSelectedFile();
        currentImage = ImageFileManager.loadImage(selectedFile);
        originalImage = ImageFileManager.loadImage(selectedFile);

        if(currentImage == null) {   // image file was not a valid image
            JOptionPane.showMessageDialog(frame,
                    "The file was not in a recognized image file format.",
                    "Image Load Error",
                    JOptionPane.ERROR_MESSAGE);
            return;
        }

        imagePanel.setImage(currentImage);
        setButtonsEnabled(true);
        showFilename(selectedFile.getPath());
        showStatus("File loaded.");
        updateCropToolbar(currentImage.getWidth(), currentImage.getHeight());
        frame.pack();
    }

private void restoreOriginal() {
        OFImage restore = originalImage;
        currentImage = restore;
        imagePanel.setImage(currentImage);
        updateCropToolbar(currentImage.getWidth(), currentImage.getHeight());
        showStatus("File restored.");
        frame.pack();
    }

Извинения, это мой первый вопрос, поэтому, если форматирование плохое или я явно упускаю важную информацию, дайте мне знать. Я просто не могу понять, почему originalImage не устанавливается после того, как он уже установлен один раз.

1 Ответ

0 голосов
/ 25 марта 2020

Я изменил свой код так, чтобы вместо изменения изображения он заново загружал изображение.

Я сделал selectedFile полем, которое я установил во время загрузки изображения, и изменил свой метод следующим образом:

private void restoreOriginal() {
        currentImage = ImageFileManager.loadImage(selectedFile);
        imagePanel.setImage(currentImage);
        updateCropToolbar(currentImage.getWidth(), currentImage.getHeight());
        showStatus("File restored.");
        frame.pack();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...