线程都是通过扩展Thread类来创建的,如果程序员需要继承其他类(非Thread类)并使该程序可以使用线程,就需要使用Runnable接口。例如,一个扩展JFrame类的GUI程序不可能再继承Thread类,因为Java语言中不支持多继承,这时该类就需要实现Runnable接口使其具有使用线程的功能。
实现Runnable接口的语法:
public class Thread extends Object implements Runnable
用匿名内部类实现:
import java.awt.*;
import javax.swing.*;
import java.awt.Event;
public class t3 extends JFrame{
private JLabel label = new JLabel();
private int count = 0;
public t3() {
setTitle("实现Runnable接口");
setBounds(10,10,300,300);
ImageIcon image = new ImageIcon("E:\\下载\\图标.jpg");
image.setImage(image.getImage().getScaledInstance(100, 100, 0));
label.setIcon(image);
label.setOpaque(true);//设置标签不透明
Thread th = new Thread(new Runnable() {//定义匿名内部类实现Runnable接口
@Override
public void run() {
// TODO Auto-generated method stub
while(count <= 300) {
label.setBounds(count, 10,300,300);//为了实现图标的滚动效果
try {
Thread.sleep(100);
}catch(Exception e) {
e.printStackTrace();
}
count += 10;
}
}
});
th.start();//线程启动
add(label);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
t3 B = new t3();
}
}
运行效果:可以实现图标在窗体中滚动的效果