网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1087|回复: 0
打印 上一主题 下一主题

Java项目实战之天天酷跑(四)

[复制链接]

271

主题

284

帖子

1243

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1243

最佳新人活跃会员热心会员突出贡献优秀版主

跳转到指定楼层
楼主
发表于 2021-2-24 19:32:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
具体要求:
  • 缓存加载界面:背景图片、进度条
  • 动态加载过程。(线程)
我们想要实现动态的缓冲加载过程,让进度条动起来,就需要引入线程的概念了。线程:
Thread类中这样定义:
线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。
举个例子,你用百度网盘下载一部电影,这就是一个线程。而如果你同时下载多部电影,这就是多线程了。
1.线程有6种状态:新建,运行,阻塞,等待,计时等待和终止。
新建:当使用new操作符创建新线程时,线程处于“新建”状态。
运行(可运行):调用start()方法。
阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。
等待:当线程等待其他线程通知调度表可以运行时。
计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。
终止:当run()方法运行完毕或出现异常时。
2.创建线程的两种方式:
1、实现Runnable
2、实现Thread类
直接上代码:
  1. package cn.sqc.runday.controller;

  2. import java.awt.BorderLayout;
  3. import java.awt.Color;

  4. import javax.swing.ImageIcon;
  5. import javax.swing.JFrame;
  6. import javax.swing.JLabel;
  7. import javax.swing.JProgressBar;

  8. /**
  9. *
  10. * @author Huey
  11. * @date 2020-11-18
  12. * 缓存加载界面:背景图片、进度条
  13. * 动态加载过程。(线程)
  14. *
  15. */
  16. public class WindowFrame extends JFrame implements Runnable{
  17.         JLabel background;
  18.         //进度条
  19.         JProgressBar jdt;
  20.         
  21.         //创建一个线程并启动
  22.         public void Start(){
  23.                 WindowFrame frame = new WindowFrame();
  24.                 Thread t = new Thread(frame);//t代表线程
  25.                 //启动线程
  26.                 t.start();
  27.                 dispose();
  28.         }
  29.         
  30.         
  31.         public WindowFrame() {
  32.                 background = new JLabel(new ImageIcon("Image/hbg.jpg"));
  33.                 this.add(BorderLayout.NORTH,background);//放在窗口上面
  34.                
  35.                 jdt = new JProgressBar();
  36.                 jdt.setStringPainted(true);//加载以字符串形式呈现出来。0%
  37.                 jdt.setBackground(Color.ORANGE);
  38.                 this.add(BorderLayout.SOUTH,jdt);
  39.                
  40.                 //大小 568 * 340
  41.                 this.setSize(568,340);
  42.                 this.setLocationRelativeTo(null);
  43.                 this.setDefaultCloseOperation(3);
  44.                 this.setUndecorated(true);
  45.                 this.setIconImage(new ImageIcon("Image/115.png").getImage());        
  46.                 this.setVisible(true);        
  47.         }
  48.         
  49.         
  50.         public static void main(String[] args) {
  51.                 new WindowFrame().Start();
  52.         }
  53.         

  54.         @Override
  55.         public void run() {
  56.                 //启动线程后,线程具体执行的内容
  57.                 int [] values = {0,1,3,10,23,32,40,47,55,66,76,86,89,95,99,99,99,100};
  58.                 for(int i=0; i<values.length; i++){//循环遍历赋值
  59.                         jdt.setValue(values[i]);
  60.                         //线程休眠
  61.                         try {
  62.                                 Thread.sleep(200);
  63.                         } catch (InterruptedException e) {
  64.                                 // TODO Auto-generated catch block
  65.                                 e.printStackTrace();
  66.                         }//200毫秒
  67.                 }
  68.         }
  69.         
  70. }
复制代码

加载界面代码敲完,现在开始造桥。
现在,我们从第一个登录界面开始测试。
点击开始游戏:
非静止画面……
成功实现!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2025-1-3 09:48 , Processed in 0.034546 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表