在窗体中要想使图片动起来,让人感觉整个过程都是连续的过程着实不易,须得下下功夫,本人通过模仿他人的思路,建立自己的思想,分为以下几个步骤完成
1.先导入以下几个包:
package com.zlw; //定义包
import java.awt.*; //导入Java.awt包,目的为了创建容器import javax.swing.*; //导入javax.swing 包,目的为了创建窗口
import java.net.URL; //导入 java.net.URL包,目的调用图片
2、编写主类
public class SwingAndThread extends JFrame{private JLabel jl=new JLabel(); //实例化标签
private static Thread t; //声明线程
private int count=0;
private Container c=getContentPane(); //创建容器
public SwingAndThread(){
setBounds(300,200,300,150);
c.setLayout(null);
URL url=SwingAndThread.class.getResource("/image07.gif"); //查找图片资源
Icon icon=new ImageIcon(url); //实例化Icon对象
jl.setIcon(icon); //将图标放置在标签中
jl.setHorizontalAlignment(SwingConstants.LEFT);
jl.setBounds(10,20,200,80); //设置标签大小
jl.setOpaque(true); //设置控件不透明
t=new Thread(new Runnable(){ //实例化Thread线程,创建内部类
public void run(){
while(count<=200){
jl.setBounds(count,20,200,80);
try{
Thread.sleep(1000/60); //使线程休眠1000/60毫秒,目的是让肉眼感觉是在连续的过程
}catch(Exception e){
e.printStackTrace();
}
++count;
if(count==200){ //当图标到达最右边时,使其回到标签最左边
count=10;
}
}
}
});
t.start(); //启动线程
c.add(jl); //将标签放置到容器中
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) { //主方法
new SwingAndThread();
}
}
3.运行效果如图: