线程与Swing相结合实现图标滚动功能

实现图标滚动功能:


165803219.jpg

165816901.jpg

165645936.jpg


详细代码及注释:

package com.lixiyu;
import java.awt.Container;
import java.net.URL;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class ThreadTestTwo extends JFrame{
/**
     *
     */
    private static final long serialVersionUID = 6159804249536493188L;
private JLabel jl=new JLabel();
private static Thread t;//声明线程对象
private int count=0;
private Container container=getContentPane();//声明容器
public ThreadTestTwo(){
    setBounds(300,200,250,100);//窗体大小与位置
    container.setLayout(null);//使窗体不使用任何布局
    URL url=ThreadTestTwo.class.getResource("image.png");
    Icon icon=new ImageIcon(url);
    jl.setIcon(icon);//把icon放置标签中
    jl.setHorizontalAlignment(SwingConstants.LEFT);//设置图片在标签的最左方
    jl.setBounds(10,10,200,50);
    jl.setOpaque(true);
        
    t=new Thread(new Runnable(){//定义匿名内部类,该类实现Runnable接口
        @SuppressWarnings("static-access")
        public void run(){//
            while(count<=200){
                jl.setBounds(count,10,200,50);//将标签的横坐标用变量表示
                try{
                    t.sleep(1000);//使线程休眠1000毫秒
                }catch(Exception e){
                e.printStackTrace();
                }
                count+=4;//使横坐标每次增加4
                if(count==200){//当图标到达最右边时,使其回到标签最左边
                    count=10;
                }
            }
        }
    });
    t.start();//启动线程
    container.add(jl);//将标签添加到容器中
    setVisible(true);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String[] args){
    new ThreadTestTwo();//实例化一个对象
}
}


你可能感兴趣的:(线程,swing,图标滚动功能)