Нет обновления, каждый раз одно и то же изображение - PullRequest
1 голос
/ 24 ноября 2011

В основном я пытаюсь создать приложение, которое отображает изображения.

filename Переменная - это путь к изображению, которое я хочу отобразить.После запуска приложения отображается изображение, но затем, когда я удаляю изображение с жесткого диска (или изменяю другое изображение на имя filename), я не получаю никакого другого изображения, так же, как и раньше.

public static void main(final String[] args) {

    String filename = "C:\\temp\\1.jpeg";
    JFrame frame = new JFrame();
    frame.getContentPane().add(new JLabel(new ImageIcon(filename)));
    frame.pack();
    frame.setVisible(true);

    // Mouse Listener is only to display another JFrame after mouseClicked event
    frame.addMouseListener(new MouseListener() {

        public void mouseClicked(MouseEvent e) {
            main(args);
        }

        public void mousePressed(MouseEvent e) {
        }

        public void mouseReleased(MouseEvent e) {
        }

        public void mouseEntered(MouseEvent e) {
        }

        public void mouseExited(MouseEvent e) {
        }
    });
}

Ответы [ 3 ]

3 голосов
/ 24 ноября 2011

Изображение кэшируется. Вы должны принудительно перезагрузить его, выполнив одно из следующих действий:

//  This works using ImageIO

imageLabel.setIcon( new ImageIcon(ImageIO.read( new File(imageName) ) ) );

//  Or you can flush the image

ImageIcon icon = new ImageIcon(imageName);
icon.getImage().flush();
imageLabel.setIcon( icon );
0 голосов
/ 24 ноября 2011

Такое поведение, которого вы пытаетесь достичь, кажется немного необычным. Если это то, что вы хотите сделать, вы можете установить таймер, который периодически запускает событие (каждые "n" секунд или что-либо другое), удаляет объект значка изображения и добавляет новый. Не забудьте в конце вызвать "pack ()".

0 голосов
/ 24 ноября 2011

Если это весь код, который есть, и вы перемещаете файлы в ОС, ваше приложение не примет изменения.

Изображение загружено, и ему всегда будет приказано рисовать одинаково.

Вы можете использовать WatchService для отслеживания изменений в файле (я думаю) или просто периодически проверять, изменился ли файл.

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