利用多线程技术,实现一个下载的进度条,每秒下载10%。(实现按钮的多功能化)

本文介绍如何使用 Java Swing 创建一个动态更新的下载进度条,通过实现 ActionListener 和 Runnable 接口,使得按钮可以在开始、暂停和重新下载之间切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

https://blog.youkuaiyun.com/weixin_45491054/article/details/105848467?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-5
解决大佬在此篇博文中提出的问题

代码

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;;
public class test04 
{

	public static void main(String[] args) 
	{
		new viewer();
	}

}
class viewer extends JFrame implements ActionListener,Runnable
{
	JProgressBar process;
	JButton jb1;
	static boolean  flag=true;
	public viewer()
	{
		super("下载进度条");
		this.setBounds(0, 0, 400,400);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setLayout(new FlowLayout());
		
	    process =new JProgressBar(0, 100);
		process.setStringPainted(true);
		this.add(process);
		jb1=new JButton("开始下载");
		this.add(jb1);
		jb1.addActionListener(this);
		this.setVisible(true);
	}

	
	public void actionPerformed(ActionEvent e)
	{
		new Thread(this).start();
		
		if(process.getValue()==process.getMaximum())
		{

			process.setValue(0);
		}
	}

	public void run()
	{
		flag=!flag;
		if(!flag)
		{
			jb1.setText("暂停下载");
		}
		else
			jb1.setText("开始下载");
		while (process.getValue() < process.getMaximum())
		{
			if (flag)
			{
				try 
				{
					Thread.currentThread().sleep(100);
					process.setValue(process.getValue() + 1);
				}
				catch (Exception e) {}
			}
			else
				process.setValue(process.getValue());
			
		}
		jb1.setText("重新下载");
	}
}




结果

在这里插入图片描述

思路提示

巧用接口来实现多重继承

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值