Runnable接口

Runnable接口可以更好的控制管理多个线程。

可以理解为多条公路(线程)通过一个收费站(Runnable接口),达到车辆(run)有序通过的目的。具体参考《线程的同步(协调)synchronized》一节

以下案例实现图片的移动,思路:通过label的x位置变化,实现图片移动

public class Demo extends JFrame {
    private JLabel label = new JLabel();
    private static Thread t;
    private int count = 0;
    private Container c = getContentPane();

    public Demo() {
        setBounds(300, 200, 250, 100);//窗体位置、大小
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        c.setLayout(null);
        URL url = Demo.class.getResource("1.gif");//图片地址
        Icon icon = new ImageIcon(url);//实例化icon
        label.setIcon(icon);//将图放入标签中
        label.setHorizontalAlignment(SwingConstants.LEFT);//label内部左布局,即图片在label左侧
        label.setBounds(0, 10, 50, 50);
        //label.setBorder(BorderFactory.createLineBorder(Color.RED));//边框颜色
        c.add(label);

        t = new Thread(new Roll());//调用Roll线程
        t.start();//启动

        setVisible(true);
    }

    class Roll implements Runnable {//定义Roll内部类,实现Runnable接口
        public void run() {//执行的内容
            while (count <= 200) {
                label.setBounds(count, 10, 50, 50);//label位置
                try {
                    Thread.sleep(1000);//休眠1s
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                count += 4;//步进距离4
                if (count >= 200) {//如果到右端,重新从左端开始
                    count = 0;
                }
            }
        }
    }

    public static void main(String[] args) {
        new Demo();//实例化窗体
    }
}

 

posted @ 2018-08-31 21:50  夕西行  阅读(323)  评论(0编辑  收藏  举报