📄 animationpanel.java
字号:
import java.awt.MediaTracker;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.BorderLayout;
import java.awt.Graphics;
import javax.swing.*;
public class AnimationPanel
extends JPanel
implements Runnable
{
private Image images[] = new Image[9];
private int currentImage = 0;
private Thread thread = null;
public AnimationPanel()
{
MediaTracker tracker = new MediaTracker(this);
for (int i = 0; i < images.length; i++)
{
images[i] = getToolkit().getImage("smile" + i + ".gif");
tracker.addImage(images[i], i);
}
try
{
tracker.waitForAll();
}
catch (InterruptedException ie)
{
showError("Image loading interrupted: " + ie);
}
if (tracker.isErrorAny())
{
showError("Error loading one or more images");
}
thread = new Thread(this);
thread.start();
}
public void run()
{
while (true)
{
try
{
repaint();
thread.sleep(100);
if (currentImage >= images.length - 1)
{
currentImage = 0;
}
else
{
currentImage++;
}
}
catch (InterruptedException ie)
{
showError("Thread interrupted: " + ie);
}
}
}
public Dimension getPreferredSize()
{
return new Dimension(images[0].getWidth(this),
images[0].getHeight(this));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(images[currentImage], 0, 0, this);
}
private void showError(String msg)
{
JOptionPane.showMessageDialog(this, msg, "Error",
JOptionPane.ERROR_MESSAGE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -