Как реализовать сон для отображения слайд-шоу изображений - PullRequest
3 голосов
/ 28 июля 2011

Я работаю в Java Swing, используя JWindows для отображения изображений ... Я сделал разные JLabels содержащие изображения, которые я хочу отображать .. Я удаляю предыдущие добавленные компоненты и добавляю новые, которые будут отображаться в том же 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 Ответ

8 голосов
/ 28 июля 2011

Это хорошее время, чтобы использовать Swing Timers .

Вам следует:

  • хранить свои этикетки / изображения в массиве, а не в разных переменных
  • установите таймер, как указано в учебнике выше
  • в событии таймера, просто поверните массив меток

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

...