Скажем, у меня есть JFrame
и JButton
. Я хочу отобразить анимированное изображение (.gif
), как только я нажму кнопку. В то время как другое событие (например, ActionEvent e
) останавливает отображение анимации в JFrame
. Какой должен быть мой подход?Изображение анимация в java swing при нажатии
4
A
ответ
8
Отображение 1-го изображения (анимационная рамка) в JLabel
. Когда пользователь нажимает кнопку, запустите Swing Timer
, который меняет значок метки на следующий кадр (ы), зацикливая, как только он показывает все кадры. Когда пользователь снова нажмет кнопку, остановите анимацию.
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.*;
class Chomper {
public static void main(String[] args) throws Exception {
final Image[] frames = {
ImageIO.read(new URL("http://i.stack.imgur.com/XUmOD.png")),
ImageIO.read(new URL("http://i.stack.imgur.com/zKyiD.png")),
ImageIO.read(new URL("http://i.stack.imgur.com/4maMm.png")),
ImageIO.read(new URL("http://i.stack.imgur.com/wn9V5.png"))
};
Runnable r = new Runnable() {
@Override
public void run() {
JPanel gui = new JPanel(new BorderLayout());
final JLabel animation = new JLabel(new ImageIcon(frames[0]));
gui.add(animation, BorderLayout.CENTER);
ActionListener animate = new ActionListener() {
private int index = 0;
@Override
public void actionPerformed(ActionEvent e) {
if (index<frames.length-1) {
index++;
} else {
index = 0;
}
animation.setIcon(new ImageIcon(frames[index]));
}
};
final Timer timer = new Timer(200,animate);
final JToggleButton b = new JToggleButton("Start/Stop");
ActionListener startStop = new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (b.isSelected()) {
timer.start();
} else {
timer.stop();
}
}
};
b.addActionListener(startStop);
gui.add(b, BorderLayout.PAGE_END);
JOptionPane.showMessageDialog(null, gui);
}
};
// Swing GUIs should be created and updated on the EDT
// http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
SwingUtilities.invokeLater(r);
}
}
3
Я не знаю, как получить кадр/изображения с GIF, но если у вас есть доступ к ним, то вы можете использовать Animated Icon класс, чтобы сделать анимацию для вас. Он использует таймер за кулисами, чтобы сделать анимацию, чтобы вы могли просто запустить/остановить/приостановить таймер по своему усмотрению.
Смежные вопросы
- 1. Java Swing 2D-анимация
- 2. изображение анимация вопрос при нажатии на кнопку
- 3. Java Swing открытая форма при нажатии кнопки
- 4. Java swing- выполнить действие при нажатии
- 5. Java swing: возвращаемое значение при нажатии кнопки
- 6. JQuery анимация при нажатии
- 7. Получить следующее изображение в каталоге при нажатии JButton - Swing
- 8. Java Swing Перерисовать изображение
- 9. Изображение Java Swing не отображается?
- 10. java swing checkboxes java swing
- 11. Анимация трафика с Swing
- 12. Выпадающая анимация для изображения при нажатии
- 13. Анимация круга при нажатии UICollectionViewCell
- 14. Анимация textarea при нажатии кнопки
- 15. анимация при нажатии кнопки возврата
- 16. Анимация позиции LI при нажатии
- 17. Анимация запускается при втором нажатии
- 18. Изображение анимация при загрузке
- 19. jQuery обратная анимация при нажатии
- 20. анимация Flip div при нажатии
- 21. Всплывающая анимация при нажатии клавиши
- 22. Изображение кнопки java кнопки Android при нажатии
- 23. Потоковая анимация Java Swing как видео
- 24. Анимация на изображении кнопки при нажатии
- 25. Java Swing Изображение не показано
- 26. вызов одной функции при нажатии любой метки JInternalFrame Java Swing
- 27. Swing анимация не работает
- 28. овальный цвет не меняется при нажатии кнопки JButton - Java Swing
- 29. Java swing: возвращает значение другому методу при нажатии кнопки
- 30. jQuery анимация цветов фона при нажатии
@EranMedan: Я думаю, что он хочет «запустить» и «остановить» анимацию, а не просто ее отобразить. –
Я думаю, что я не пытаюсь просто отобразить изображение или проблему с кадрами, поэтому эти предложения не помогают. – se7en
* «Я хочу отображать анимированное изображение (' .gif »), как только я нажимаю кнопку.» * GIF - это единственный формат, поддерживающий анимацию. Поэтому «предпочтительно» просто смущает людей. Я предполагаю, что важным битом является «анимация». Пожалуйста, подтвердите и отредактируйте свой вопрос, чтобы он стал более понятным. –