Анимация в GIF не работает, когда идет обработка - PullRequest
2 голосов
/ 27 марта 2011

Я отображаю GIF-анимацию, используя следующий код:

    ImageIcon ii = new ImageIcon(getClass().getResource("resources/wait_animated.gif"));
            JLabel l2 = new JLabel("Please Wait...",ii, SwingConstants.CENTER);
        ii.setImageObserver(l2);
        d.setIconImage(null);
        JDesktopPane dp=new JDesktopPane();
        dp.setPreferredSize(new Dimension(300,50));

        l2.setLocation(dp.getX(),dp.getY());
        l2.setPreferredSize(new Dimension(300,50));

        d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        d.setTitle("Wait dialog");

        d.add(l2);
        JDialog.setDefaultLookAndFeelDecorated(true);
        d.pack();
        d.setPreferredSize(new Dimension(50,50));
        d.setLocation(300,300);
        d.setAlwaysOnTop(true);
        d.setVisible(true);

Анимация в GIF отображается довольно хорошо.Однако, когда есть некоторая обработка, которая должна быть сделана после этого (я использую диалоговое окно ожидания, когда происходит обновление базы данных);анимация зависает.Может кто-нибудь предложить простой и эффективный способ достижения этого?Чем проще, тем лучше для меня.Заранее спасибо

1 Ответ

3 голосов
/ 27 марта 2011

Анимация GIF выполняется потоком событий Swing. Я предполагаю, что вы сами не создаете никаких потоков, поэтому, когда вы обновляете базу данных, это также делается потоком событий. Таким образом, поток событий занят работой с базой данных и не может обновлять анимацию одновременно.

Перемещение обработки базы данных (и других тяжелых задач) в отдельные потоки. Как правило, вся обработка, которая может занять значительное время, должна выполняться в отдельных потоках.

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