线程与Swing相结合实现图标滚动功能

简介:

实现图标滚动功能:


165803219.jpg

165816901.jpg

165645936.jpg


详细代码及注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package  com.lixiyu;
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  ThreadTestTwo  extends  JFrame{
/**
      *
      */
     private  static  final  long  serialVersionUID = 6159804249536493188L;
private  JLabel jl= new  JLabel();
private  static  Thread t; //声明线程对象
private  int  count= 0 ;
private  Container container=getContentPane(); //声明容器
public  ThreadTestTwo(){
     setBounds( 300 , 200 , 250 , 100 ); //窗体大小与位置
     container.setLayout( null ); //使窗体不使用任何布局
     URL url=ThreadTestTwo. class .getResource( "image.png" );
     Icon icon= new  ImageIcon(url);
     jl.setIcon(icon); //把icon放置标签中
     jl.setHorizontalAlignment(SwingConstants.LEFT); //设置图片在标签的最左方
     jl.setBounds( 10 , 10 , 200 , 50 );
     jl.setOpaque( true );
         
     t= new  Thread( new  Runnable(){ //定义匿名内部类,该类实现Runnable接口
         @SuppressWarnings ( "static-access" )
         public  void  run(){ //
             while (count<= 200 ){
                 jl.setBounds(count, 10 , 200 , 50 ); //将标签的横坐标用变量表示
                 try {
                     t.sleep( 1000 ); //使线程休眠1000毫秒
                 } catch (Exception e){
                 e.printStackTrace();
                 }
                 count+= 4 ; //使横坐标每次增加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  ThreadTestTwo(); //实例化一个对象
}
}


本文转自lixiyu 51CTO博客,原文链接:http://blog.51cto.com/lixiyu/1312773,如需转载请自行联系原作者

相关文章
|
6月前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
【4月更文挑战第6天】`ReentrantLock`是Java并发编程中一个强大的同步工具,比`synchronized`提供更丰富功能。它支持可响应性、可中断性、公平性选择及条件变量。通过示例展示了创建、公平性设置、可中断锁定、尝试锁定及条件变量的使用。`ReentrantLock`使线程同步更灵活,适用于高性能应用,但使用需谨慎,理解其原理并恰当使用。
80 2
|
2月前
|
网络协议 C语言
C语言 网络编程(十四)并发的TCP服务端-以线程完成功能
这段代码实现了一个基于TCP协议的多线程服务器和客户端程序,服务器端通过为每个客户端创建独立的线程来处理并发请求,解决了粘包问题并支持不定长数据传输。服务器监听在IP地址`172.17.140.183`的`8080`端口上,接收客户端发来的数据,并将接收到的消息添加“-回传”后返回给客户端。客户端则可以循环输入并发送数据,同时接收服务器回传的信息。当输入“exit”时,客户端会结束与服务器的通信并关闭连接。
|
2月前
|
C语言
C语言 网络编程(九)并发的UDP服务端 以线程完成功能
这是一个基于UDP协议的客户端和服务端程序,其中服务端采用多线程并发处理客户端请求。客户端通过UDP向服务端发送登录请求,并根据登录结果与服务端的新子线程进行后续交互。服务端在主线程中接收客户端请求并创建新线程处理登录验证及后续通信,子线程创建新的套接字并与客户端进行数据交换。该程序展示了如何利用线程和UDP实现简单的并发服务器架构。
|
3月前
|
Java 开发者
Java多线程教程:使用ReentrantLock实现高级锁功能
Java多线程教程:使用ReentrantLock实现高级锁功能
41 1
|
3月前
|
安全 Java 开发者
Swing 的线程安全分析
【8月更文挑战第22天】
58 4
|
3月前
|
安全 Java API
|
3月前
|
设计模式 安全 前端开发
Swing 是线程安全的吗?
【8月更文挑战第21天】
43 0
|
5月前
|
NoSQL Redis
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
Redis系列学习文章分享---第五篇(Redis实战篇--优惠券秒杀,全局唯一id 添加优惠券 实现秒杀下单 库存超卖问题分析 乐观锁解决超卖 实现一人一单功能 集群下的线程并发安全问题)
123 0
|
6月前
|
缓存 Java 测试技术
Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能
Java多线程实战-实现多线程文件下载,支持断点续传、日志记录等功能
|
6月前
|
数据处理
Swing通过后台线程实现页面更新
Swing通过后台线程实现页面更新
75 2
下一篇
无影云桌面