我使用以下代码显示 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 中的动画显示得很好。但是,当此后需要进行一些处理时(我在数据库更新正在进行时使用等待对话框);动画挂起。有人可以建议一种简单有效的方法来实现这一目标吗? 对我来说越简单越好。 提前致谢
最佳答案
GIF的动画是由Swing事件线程完成的。我想您不会自己生成任何线程,因此当您更新数据库时,它也是由事件线程完成的。因此,事件线程正忙于处理数据库,无法同时更新动画。
将数据库处理(和其他繁重的任务)移至单独的线程中。一般来说,所有可能需要相当长的时间的处理都应该在单独的线程中完成。
关于java - 处理过程中 GIF 中的动画不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5450175/