2014-02-19 3 views
-1

Привет, ребята, мы пытаемся сделать просто анимацию в JFrame. У нас есть 13 изображений палубы (от менее к более карт), и мы хотим реализовать в коде с функцией сна, что-то вроде этогоСоздание быстрой анимации в Java

setIcon(pic1) 
sleep 
setIcon(pic2) 
sleep 
etc... 

Так будет смахивает, что палуба растет, мы использовал функцию thread.sleep, но он не работает. Любая помощь?

Спасибо.

+0

* «Любая помощь?» * Любые признаки усилий? 1) Чтобы получить более эффективную помощь, отправьте сообщение [MCTaRE] (http://stackoverflow.com/help/mcve) (минимальный полный протестированный и читаемый пример). 2) Одним из способов получения изображения (ов) для примера является горячая ссылка на изображения, видимые в [этом ответе] (http://stackoverflow.com/a/19209651/418556). –

ответ

2

Поиск по сайту по этому вопросу, и вы поймете, почему Thread.sleep(...) не подходит при вызове потока событий Swing. Вы также увидите, что вместо этого вы должны использовать Swing Timer.

Например, пожалуйста, взгляните на мой код в моем ответе here.

В вашей ситуации, предполагая массив ImageIcons, вы могли бы попробовать что-то вроде:

new Timer(timerDelay, new ActionListener() { 
    private int iconIndex = 0; 

    public void actionPerformed(ActionEvent evt) { 
    if (iconIndex < iconArray.length) { 
     label.setIcon(iconArray[iconIndex]); 
     iconIndex++; 
    } else { 
     ((Timer)evt.getSource()).stop(); // stop the timer 
    } 
    } 
}).start(); 

Для окровавленных деталей, пожалуйста, ознакомьтесь с Swing Timer Tutorial.


Редактировать
Вы заявляете в комментарии:

я не имею массив ImageIcons, у меня есть 13 изображений и кнопки, я хочу, чтобы сделать внешнюю функцию (Out события Button), который отображает в нем 13 изображений каждую секунду, накладывая их один поверх другого (в том же месте).

Нет проблем - то сделать массив Icon или ArrayList<Icon> и вещи вы ImageIcons там. Независимо от того, мой код выше не предназначен для резки и вставки, но для того, чтобы дать вам общее представление о форме решения, поскольку идеи могут быть распространены на вашу проблему. Теперь вам нужно принять эту идею, а также то, что вы можете извлечь из учебника таймера Swing Timer (снова можно найти ссылку here) и попытайтесь написать код для своего собственного решения. Также, пожалуйста, ищите этот сайт по теме Swing Timer и анимации, потому что этот вопрос задают лот. Но обратите внимание, что при поиске не смотрите на точные дубликаты вашего вопроса, так как этого обычно не существует, а скорее вопросов, связанных с похожими понятиями, а затем одолжить концепции, представленные в их решениях.

Удачи в ваших усилиях!

+0

У меня нет массива ImageIcons, у меня есть 13 изображений и кнопка, я хочу сделать внешнюю функцию (из события Button), которая каждые 13 секунд отображает 13 изображений, накладывая их на вершину другой (в том же месте). Я не знаю, ясно ли я. Извините за неудобства и спасибо. – user3329320

+0

@ user3329320: Пожалуйста, см. Править, чтобы ответить, и чтобы не волноваться, никаких неудобств не было. –

Смежные вопросы