Thread多线程(二):Runnable

        如果要让其他类使用线程就要用到runnable,其他thread就是实现了runnbale接口,其中run()方法就是对runnable接口中的run()方法的具体实现。有两个构造函数分别是:public thread(runnable)、public thread(runnable r,string name)
        使用runnable接口实现了启动新的线程步骤如下:
               1、创建runnable对象。2、使用参数为runnable对象的构造方法创建thread实例。3、调用start()方法启动线程。
       下面结合swing来练习一下:
        
       
package hengzhe.cn.o1;

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 SwingAndThread extends JFrame
{
    private JLabel jl = new JLabel();
    private static Thread t;//线程对象
    private int count = 0;
    private Container container = getContentPane();//容器

    public SwingAndThread()
    {
        setBounds(300, 200, 250, 100);//窗体大小与位置
        container.setLayout(null);
    
        Icon icon = new ImageIcon("E:\\ymnl.png");
        jl.setIcon(icon);
        jl.setHorizontalAlignment(SwingConstants.LEFT);//图片的位置
        jl.setBounds(10, 10, 200, 50);//标签的大小
        jl.setOpaque(true);
        t = new Thread(new Runnable()    //匿名类,实现runnable接口
        {
            public void run()//重写run()方法
            {
                while (count <= 200)//设置循环条件
                {
                    jl.setBounds(count, 10, 200, 50);
                    try
                    {
                        t.sleep(1000);//休眠1000毫秒
                    } catch (Exception ex)
                    {
                        ex.printStackTrace();
                    }
                    count += 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 SwingAndThread();//调用主体

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章