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();//实例化窗体 } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
2016-08-31 对低、高频系数直接重构upcoef2
2016-08-31 多尺度二维离散小波重构waverec2
2016-08-31 单尺度二维离散小波重构(逆变换)idwt2
2016-08-31 二维离散平稳小波分解swt2
2016-08-31 多尺度二维离散小波分解wavedec2
2016-08-31 单尺度二维离散小波分解dwt2
2016-08-31 uint8与double,二维矩阵显示灰度图