如何实现睡眠以显示图像的幻灯片

时间:2011-07-27 20:43:18

标签: java swing sleep

我正在Java Swing中使用JWindows来显示图像...我做了不同的JLabel包含我想要显示的图像..我删除以前添加的组件并添加新的组件以显示在同一个JWindow上..问题如下..

代码在没有睡眠功能的情况下完美运行。事件完成后,我可以在不同的窗口或同一个窗口上显示所有图像。但是当我使用睡眠时,在此期间根本没有显示...

有没有办法像幻灯片一样对图像实施延迟,并在延迟之前绘制图像?

            getContentPane().remove(startLabel);
            getContentPane().add(recordLabel1, "Center");
            setVisible(true);
            try {
                    Thread.sleep(500);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                getContentPane().remove(recordLabel1);
                getContentPane().add(recordLabel2, "Center");
            try {
                    Thread.sleep(500);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                getContentPane().remove(recordLabel2);
                getContentPane().add(recordLabel3, "Center");
            try {
                    Thread.sleep(500);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                getContentPane().remove(recordLabel3);
                getContentPane().add(recordLabel4, "Center");
            try {
                    Thread.sleep(500);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                getContentPane().remove(recordLabel4);
                getContentPane().add(pausedLabel, "Center");
                setVisible(false);  

1 个答案:

答案 0 :(得分:8)

现在是使用Swing Timers的好时机。

你应该:

  • 将标签/图片存储在数组中而不是存储在不同的变量中
  • 设置如上面教程中所示的计时器
  • 在计时器事件中,只需旋转您的标签数组

您需要的只是课程中的额外成员,用于存储您当前正在显示的图片编号。当计时器触发时,使用该成员从窗格中删除当前项目,增加它(以您拥有的元素总数为模),然后插入新项目。