具体要求:- 缓存加载界面:背景图片、进度条
- 动态加载过程。(线程)
我们想要实现动态的缓冲加载过程,让进度条动起来,就需要引入线程的概念了。线程:Thread类中这样定义: 线程是程序中执行的线程,Java虚拟机允许程序同时运行多个执行线程。 举个例子,你用百度网盘下载一部电影,这就是一个线程。而如果你同时下载多部电影,这就是多线程了。 1.线程有6种状态:新建,运行,阻塞,等待,计时等待和终止。 新建:当使用new操作符创建新线程时,线程处于“新建”状态。
运行(可运行):调用start()方法。
阻塞:当线程需要获得对象的内置锁,而该锁正在被其他线程拥有。
等待:当线程等待其他线程通知调度表可以运行时。
计时等待:对于一些含有时间参数的方法,如Thread类的sleep() 。
终止:当run()方法运行完毕或出现异常时。 2.创建线程的两种方式: 1、实现Runnable
2、实现Thread类 直接上代码: - package cn.sqc.runday.controller;
- import java.awt.BorderLayout;
- import java.awt.Color;
- import javax.swing.ImageIcon;
- import javax.swing.JFrame;
- import javax.swing.JLabel;
- import javax.swing.JProgressBar;
- /**
- *
- * @author Huey
- * @date 2020-11-18
- * 缓存加载界面:背景图片、进度条
- * 动态加载过程。(线程)
- *
- */
- public class WindowFrame extends JFrame implements Runnable{
- JLabel background;
- //进度条
- JProgressBar jdt;
-
- //创建一个线程并启动
- public void Start(){
- WindowFrame frame = new WindowFrame();
- Thread t = new Thread(frame);//t代表线程
- //启动线程
- t.start();
- dispose();
- }
-
-
- public WindowFrame() {
- background = new JLabel(new ImageIcon("Image/hbg.jpg"));
- this.add(BorderLayout.NORTH,background);//放在窗口上面
-
- jdt = new JProgressBar();
- jdt.setStringPainted(true);//加载以字符串形式呈现出来。0%
- jdt.setBackground(Color.ORANGE);
- this.add(BorderLayout.SOUTH,jdt);
-
- //大小 568 * 340
- this.setSize(568,340);
- this.setLocationRelativeTo(null);
- this.setDefaultCloseOperation(3);
- this.setUndecorated(true);
- this.setIconImage(new ImageIcon("Image/115.png").getImage());
- this.setVisible(true);
- }
-
-
- public static void main(String[] args) {
- new WindowFrame().Start();
- }
-
- @Override
- public void run() {
- //启动线程后,线程具体执行的内容
- int [] values = {0,1,3,10,23,32,40,47,55,66,76,86,89,95,99,99,99,100};
- for(int i=0; i<values.length; i++){//循环遍历赋值
- jdt.setValue(values[i]);
- //线程休眠
- try {
- Thread.sleep(200);
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }//200毫秒
- }
- }
-
- }
复制代码
加载界面代码敲完,现在开始造桥。 现在,我们从第一个登录界面开始测试。 点击开始游戏: 非静止画面…… 成功实现!
|