📄 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.*;
import java.lang.Thread;
public class AnimationPanel extends JPanel implements Runnable
{
private Image images[]=new Image[17];
private int currentImage=0;
private Thread thread;
public AnimationPanel()
{
MediaTracker tracker=new MediaTracker(this);
for(int i=0;i<images.length;i++)
{
//URL url=new URL("img");
images[i]=getToolkit().getImage( "img"+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 imaged");
thread=new Thread(this);
thread.start();
}
public void run()
{
System.out.println("thread");
while(true)
{
try
{
repaint();
thread.sleep(1000);
if(currentImage>=images.length-1)
{currentImage=0;
System.out.println(currentImage);
}
else
{currentImage++;
System.out.println(currentImage);}
}
catch(InterruptedException ie)
{
showError("Thread interrupt"+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);
}
}
class AnimationTest extends JFrame
{
public AnimationTest()
{
super("Animation test");
getContentPane().add(new AnimationPanel());
validate();
pack();
setVisible(true);
}
public static void main(String args[])
{
AnimationTest gt=new AnimationTest();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -