JAVA多线程程序ProgressBar

JAVA多线程程序ProgressBar

题目简介:

思维导图:

实验代码:建议先看CalThread类,计算线程的实现,再作基本CalFrame类的界面,

                  然后作ReadThread类,结合CalFrame的组件,最后完善CalFrame类

 (代码折叠)

import java.awt.EventQueue;import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.SwingConstants;
import javax.swing.JPanel;
import java.awt.GridLayout;
import javax.swing.JTextArea;
import javax.swing.JProgressBar;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
/***@author 李祖林*/
public class CalFrame implements ActionListener{private JFrame frame;JTextArea textA,textB;JProgressBar progressBar;JButton button;public CalFrame() {frame = new JFrame();frame.setBounds(100, 100, 755, 300);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.getContentPane().setLayout(new BorderLayout(0, 0));JLabel label = new JLabel("\u591A\u7EBF\u7A0B \u8BA1\u7B971!+2!+...+12!");label.setHorizontalAlignment(SwingConstants.CENTER);label.setFont(new Font("宋体", Font.BOLD, 18));frame.getContentPane().add(label, BorderLayout.NORTH);JPanel panel = new JPanel();frame.getContentPane().add(panel, BorderLayout.CENTER);panel.setLayout(new GridLayout(3, 2, 0, 0));JLabel label_1 = new JLabel("\u8BA1\u7B97\u8FC7\u7A0B");label_1.setFont(new Font("宋体", Font.BOLD, 18));label_1.setHorizontalAlignment(SwingConstants.CENTER);panel.add(label_1);textA = new JTextArea();textA.setFont(new Font("Courier New", Font.BOLD, 15));panel.add(textA);JLabel label_2 = new JLabel("\u8FDB\u5EA6\u6761");label_2.setHorizontalAlignment(SwingConstants.CENTER);label_2.setFont(new Font("宋体", Font.BOLD, 18));panel.add(label_2);progressBar = new JProgressBar();progressBar.setMaximum(12);panel.add(progressBar);JLabel label_3 = new JLabel("\u8BA1\u7B97\u7ED3\u679C");label_3.setHorizontalAlignment(SwingConstants.CENTER);label_3.setFont(new Font("宋体", Font.BOLD, 18));panel.add(label_3);textB = new JTextArea();textB.setFont(new Font("Courier New", Font.BOLD, 18));panel.add(textB);JPanel panel_1 = new JPanel();frame.getContentPane().add(panel_1, BorderLayout.SOUTH);button = new JButton("\u5F00\u59CB");button.setFont(new Font("宋体", Font.BOLD, 18));panel_1.add(button);button.addActionListener(this);frame.setVisible(true);}public void actionPerformed(ActionEvent e) {/*计算线程 自启动*/CalThread calThread = new CalThread();/*读取线程*/ReadThread readThread = new ReadThread(this);    //此处的this是CalFrame类的对象Thread thread = new Thread(readThread);            //非自启动:构造扩展线程类的对象,通过Thread()传该类得以实现线程
        thread.start();}public static void main(String[] args) {CalFrame calFrame = new CalFrame();}}
CalFrame
/*** @author 李祖林**/
public class ReadThread extends Thread {/*成员变量*/CalFrame calFrame;/*(有参与无参)构造函数*/public ReadThread() {}public ReadThread(CalFrame calFrame) {this.calFrame = calFrame;}/*线程开始读取*/public void run(){while(true){calFrame.textA.setText(CalThread.string);                //计算过程calFrame.textB.setText(String.valueOf(CalThread.sum));    //计算结果calFrame.progressBar.setValue(CalThread.n);                //计算进度try {Thread.sleep(100);} catch (InterruptedException e) { System.err.println("读取线程ReadThread发送错误!");e.printStackTrace();}}}
}
ReadThread
/*** @author 李祖林**/
public class CalThread extends Thread {static double sum = 1;            static String string = "1!";static int n = 1;Thread thread = null;/*构造函数  自启动*/public CalThread() {thread = new Thread(this);thread.start();}/*计算n!*/double fun(int n){double sum = 1;for(int i = 1;i <= n;i++){sum *= i;}return sum;}/*线程开始计算*/public void run(){while(n<12){n++;                                                //进度条进度sum += fun(n);                                        //计算结果string  = string + "+" + n + "!";                //计算过程try {Thread.sleep((int)Math.random()*600 + 300);        //随机300-900毫秒} catch (InterruptedException e) {System.err.println("计算线程CalThread出现错误!");e.printStackTrace();}}}}
CalThread

 实验结果:

转载于:https://www.cnblogs.com/jdemarryme/p/7070216.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468343.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ad如何选中当前层上的器件_82条AD转换设计经验总结!

看到一片关于AD转换设计中的基本问题整理博文&#xff0c;特地转载过来和大家共分享。了解数据转换器错误及参数1、如何选择高速模数转换之前的信号调理器件;如何解决多路模数转换的同步问题?ADC之前的信号调理&#xff0c;最根本的原则就是信号调理引起的噪声和误差要在ADC的…

为什么Linux内核里大量使用goto,而很多书籍却不提倡使用?

关于C语言的goto语句存在很多争议&#xff0c;很多书籍都建议“谨慎使用&#xff0c;或者根本不用”。Linux之父Linus在Linux中大量使用goto&#xff0c;也是在启示着我们可以合理使用goto语句。存在即合理&#xff0c;既然是C语言中的一个知识点&#xff0c;我们还是有必要学会…

python特征匹配 查找_特征匹配+单纯形查找对象

我尝试使用opencv获取一个查询图像并在一个基本图像中进行匹配。我看了一下在线教程&#xff0c;你看&#xff0c;他们有示例代码来做这件事。所以我复制并粘贴了代码&#xff0c;并尝试用一些试用图像来运行它。下面是代码和一组图像示例。在import numpy as npimport cv2from…

ActionBarActivity设置全屏无标题

新建的Activity继承自ActionBarActivity&#xff0c;设置全屏无标题本来非常easy的事&#xff0c;可是没想到app居然无缘无故的挂&#xff0c;要么就是白屏一片&#xff0c;要么就是黑屏。坑了我一个多小时。&#xff01;&#xff01;原因是ActionBarActivity设置theme的时候仅…

python数据类型有哪些、分别有什么用途_python中的数据类型有哪些

python中的数据类型有9种&#xff0c;分别是1、字符串2、布尔类型3、整数4、浮点数5、数字6、列表7、元组8、字典9、日期。1、字符串 1.1、如何在Python中使用字符串 a、使用单引号() 用单引号括起来表示字符串&#xff0c;例如&#xff1a;strthis is string; print str; b、使…

用单链表实现一个队列

直接写代码吧 直接一些 #include<stdio.h> #include<stdlib.h> typedef int ElementType; /*队列元素类型*/ #define SUCCESS 0 #define FAILURE -1 /*定义队列结构*/ typedef struct StackInfo {ElementType value; /*队列存储的数据*/struct StackInfo *next; /…

Unity 之 如何删除Unity项目里面没用的东西??

选中需要用到的Scene&#xff0c;右键选 Select Dependencies&#xff0c;这样会选出这个场景所有用到的文件&#xff0c;将这些文件导出为 .unitypackage。 用同样的办法就所有用到的几个场景的文件分别导出包。在项目中删除除场景文件之外的所有其它文件&#xff0c;再将原先…

java access jdbc_Java连接Access数据库

JDBC(Java DataBase Connectivity)是Java数据库连接API。JDBC能完成与一个数据库建立连接&#xff0c;然后向数据库发送SQL语句&#xff0c;再处理数据库返回的结果。JDBC在设计上和ODBC相似。JDBC和数据库建立连接的一种方式是首先建立起一个JDBC-ODBC桥接器。首先安装office2…

python turtle 怎么设计背景颜色_Python, turtle海龟作图,如何添加背景图片?

展开全部 turtle.bgpic(rres/bg.png) #这样设置62616964757a686964616fe58685e5aeb931333431346334。def bgpic(self, picnameNone): """Set background image or return name of current backgroundimage. Optional argument: picname -- a string, name of a …

五分钟搞懂什么是红黑树(全程图解)

红黑树&#xff0c;对很多童鞋来说&#xff0c;是既熟悉又陌生。熟悉是因为在校学习期间&#xff0c;准备面试时&#xff0c;这是重点。然后经过多年的荒废&#xff0c;如今已经忘记的差不多了。如果正在看文章的你&#xff0c;马上快要毕业&#xff0c;面临着找工作的压力&…

SequenceFile文件

SequenceFile文件是Hadoop用来存储二进制形式的key-value对而设计的一种平面文件(Flat File)。目前&#xff0c;也有不少人在该文件的基础之上提出了一些HDFS中小文件存储的解决方案&#xff0c;他们的基本思路就是将小文件进行合并成一个大文件&#xff0c;同时对这些小文件的…

python去停用词用nltk_使用nltk删除英文停用词

一、概念 首先我们来看一下停用词的概念&#xff0c;然后来介绍使用nltk如何删除英文的停用词&#xff1a; 由于一些常用字或者词使用的频率相当的高&#xff0c;英语中比如a&#xff0c;the, he等&#xff0c;中文中比如&#xff1a;我、它、个等&#xff0c;每个页面几乎都包…

win10右键闪退到桌面_WIN10设置闪退,桌面右键个性化显示设置等均无效

开始菜单点击设置&#xff0c;会报错&#xff0c;详细信息记不清了&#xff0c;提示路径C:\Windows\ImmersiveControlPanel\SystemSettings.exe&#xff0c;使用fix it修复工具无效尝试更新系统&#xff0c;更新至最新版本后仍然存在问题事件管理器中找到了这个错误应用程序名称…

Linux 内核红黑树分析

Android binder 内核实现是用红黑树的&#xff0c;理解红黑树我觉得是每一个Linux er的重中之重&#xff0c;感谢格子森同学的投稿&#xff0c;周末愉快。内核版本为 linux4.2.1 本文主要从红黑树的代码实现入手&#xff0c;来讨论linux内核中是如何实现红黑树的(主要是插入和删…

postgresql数据库安装及简单操作

自从MySQL被Oracle收购以后&#xff0c;PostgreSQL逐渐成为开源关系型数据库的首选。 本文介绍PostgreSQL的安装和基本用法&#xff0c;供初次使用者上手。以下内容基于Debian操作系统&#xff0c;其他操作系统实在没有精力兼顾&#xff0c;但是大部分内容应该普遍适用。 一、安…

python中协程与函数的区别_python 协程与go协程的区别

进程、线程和协程 进程的定义&#xff1a; 进程&#xff0c;是计算机中已运行程序的实体。程序本身只是指令、数据及其组织形式的描述&#xff0c;进程才是程序的真正运行实例。 线程的定义&#xff1a; 操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是…

周末随想,野路子

焦虑不知道是不是因为科技太发达的原因&#xff0c;晚上睡觉之前总是要看看手机&#xff0c;现在写公众号之后&#xff0c;也经常有读者问问题&#xff0c;总是担心错过哪条消息&#xff0c;所以时刻想看手机&#xff0c;而且因为太过于焦虑的原因&#xff0c;我把微信设置为静…

appium for java教程_appium自动化测试入门(java版)

1、简述appium 是一个自动化测试开源工具&#xff0c;支持 iOS 平台和 Android 平台上的原生应用&#xff0c;web应用和混合应用。“移动原生应用”是指那些用iOS或者 Android SDK 写的应用(Application简称app)。“移动web应用”是指使用移动浏览器访问的应用(appium支持iOS上…

c语言错误解析-变量声明

问题描述&#xff1a;在vc6syntax error : missing ; before type int main(){ printf("Systembegin\n"); PID_init(); int count0; 如上 在VC中编译c程序&#xff0c;在一个大括号括起的范围内&#xff0c;如果变量声明放在了函数调用的后面&#xff0c;那么编译的…

python 批量处理文件_python批量处理文件或文件夹

# -*- coding: utf-8 -*- import os,shutil import sys import numpy as np ##########批量删除不同文件夹下的同名文件夹############# def arrange_file(dir_path0): for dirpath,dirnames,filenames in os.walk(dir_path0): if my_result in dirpath: # print(dirpath) shut…