Запуск функции, когда строка в списке отличается от строки в предыдущем значении списка

Если вы хотите «обновить» JPanel, тогда вы должны вызвать repaint (), который вызовет ваш paintComponent (). Это должно устранить вашу проблему:

public void setImage(BufferedImage bi)
{
    image = bi;
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            repaint();
        }
    });
}

Хорошая практика обновления и изменения GUI с помощью EDT. Heres больше информации об EDT, если вам интересно:

Как работает поток отправки событий?

repaint не требуется вызванный из EDT. Если вы меняете GUI, например, устанавливаете текст в JLabel, он должен быть внутри EDT. Heres больше информации о том, что можно назвать вне EDT (любезно предоставлено nIcE cOw):

Безопасно использовать Component.repaint () вне EDT?

-1
задан sandy caskie 17 March 2019 в 19:47
поделиться