package thread;
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;
/*
* 实现Runnable接口
* 实现Runnable接口的语法
* public class Thread extends Object implements Runnable
* 使用Runnable接口的步骤
* 1.建立Runnable对象
* 2.使用参数为Runnable对象的构造方法创建Thread实例
* 3.调用start()启动线程
*
*/
public class SwingAndThread extends JFrame{
//声明JLabel对象
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);
//获取图片的URL
URL url=SwingAndThread.class.getResource("ImageButton.jpg");
//实例化一个Icon
Icon icon=new ImageIcon(url);
//将图标放置在标签中
jl.setIcon(icon);
//设置图片在标签的左上方
jl.setHorizontalAlignment(SwingConstants.LEFT);
//设置标签的位置与大小
jl.setBounds(10, 10, 200, 50);
jl.setOpaque(true);
t=new Thread(new Runnable() {
//定义匿名内部类,该类实现Runnable接口
@Override
public void run() {//实现run()
while(count<=200) {//设置循环条件
//将标签的横坐标用变量表示
jl.setBounds(count, 10, 200, 50);
try {
//使线程休眠1000毫秒
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
//使横坐标每次增加4
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();
}
}
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;
/*
* 实现Runnable接口
* 实现Runnable接口的语法
* public class Thread extends Object implements Runnable
* 使用Runnable接口的步骤
* 1.建立Runnable对象
* 2.使用参数为Runnable对象的构造方法创建Thread实例
* 3.调用start()启动线程
*
*/
public class SwingAndThread extends JFrame{
//声明JLabel对象
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);
//获取图片的URL
URL url=SwingAndThread.class.getResource("ImageButton.jpg");
//实例化一个Icon
Icon icon=new ImageIcon(url);
//将图标放置在标签中
jl.setIcon(icon);
//设置图片在标签的左上方
jl.setHorizontalAlignment(SwingConstants.LEFT);
//设置标签的位置与大小
jl.setBounds(10, 10, 200, 50);
jl.setOpaque(true);
t=new Thread(new Runnable() {
//定义匿名内部类,该类实现Runnable接口
@Override
public void run() {//实现run()
while(count<=200) {//设置循环条件
//将标签的横坐标用变量表示
jl.setBounds(count, 10, 200, 50);
try {
//使线程休眠1000毫秒
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
//使横坐标每次增加4
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();
}
}