有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我在JavaSwing中使用JWindows显示图像。。。我制作了不同的jLabel,其中包含我想要显示的图像。。我正在删除以前添加的组件,并添加要在同一窗口中显示的新组件。。问题如下

该代码在没有睡眠功能的情况下工作正常。事件完成后,我可以在不同窗口或相同窗口上显示所有图像。。然而,当我使用睡眠时,在这段时间里什么都不会显示

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

            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) 个答案

  1. # 1 楼答案

    这是使用Swing Timers的好时机

    你应该:

    • 将标签/图片存储在数组中,而不是存储在不同的变量中
    • 按照上述教程中的说明设置计时器
    • 在计时器事件中,只需旋转标签数组

    你只需要在你的班级里有一个额外的成员来存储你当前显示的图片编号。当计时器启动时,使用该成员从窗格中删除当前项,增加它(以您拥有的元素总数为单位),然后插入新项