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();//調用主體

    }

}


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