【例20.4】让进度条A等待进度条B(进度条A启动后,进度到1%后,启动进度条B,等进度条B到100%后,进度条A再启动)

【例20.4】让进度条A等待进度条B
在项目中创建JoinTest类,该类继承了JFrame类。该实例包括两个进度条,进度条的进度由线程来控制,通过使用join()方法使上面的进度条必须等待下面的进度条完成后,才可以继续。

/*【例20.4】让进度条A等待进度条B
 * 在项目中创建JoinTest类,该类继承了JFrame类。该实例包括两个进度条,
 * 进度条的进度由线程来控制,通过使用join()方法使上面的进度条必须等待下面
 * 的进度条完成后,才可以继续。
 * */
package dxc;

import java.awt.BorderLayout;
import javax.swing.*;

public class JoinTest extends JFrame{
	private Thread threadA;
	private Thread threadB;
	private JProgressBar progressBarA = new JProgressBar();
	private JProgressBar progressBarB = new JProgressBar();
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		JoinTest test = new JoinTest();
		test.setVisible(true);								// 设置窗体是否可见
	}
	
	public JoinTest() {
		setBounds(200, 200, 200, 200);						// 设置窗体左上角坐标和窗体宽和高      
		setDefaultCloseOperation(EXIT_ON_CLOSE);			// 手动关闭窗体左上角的X号时,释放窗体资源并关闭程序。( (1)WindowContants.EXIT_ON_CLOSE;(2)JFrame.EXIT_ON_CLOSE;(3)EXIT_ON_CLOSE;)
		setResizable(false);								// 设置窗体的大小不可改变
		getContentPane().add(progressBarA, BorderLayout.NORTH);
		getContentPane().add(progressBarB, BorderLayout.SOUTH);
		progressBarA.setStringPainted(true);
		progressBarB.setStringPainted(true);
		threadA = new Thread(new Runnable() {
			int count = 0;									// 进度条A上的数字
			@Override
			public void run() {
				while(true) {
					progressBarA.setValue(++count);
					try {
						Thread.sleep(100);
						threadB.join();
					}catch(InterruptedException e) {
						e.printStackTrace();
					}
				}
			}
		});
		threadA.start();
		threadB = new Thread(new Runnable() {
			int count = 0;									// 进度条上B的数字
			@Override
			public void run() {
				while(true) {
					progressBarB.setValue(++count);
					try {
						Thread.sleep(100);						
					}catch(InterruptedException e) {
						e.printStackTrace();
					}
					if(count == 100) {
						break;
					}					
				}
			}
		});
		threadB.start();
	}

}

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值