JAVA多线程程序ProgressBar2

题目简介:

思路分析:与上一篇:JAVA多线程程序ProgressBar类似,本篇避免过于冗杂,所以在此没有给出。

实验代码:

import java.awt.EventQueue;

import javax.swing.JFrame;
import java.awt.BorderLayout;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.JPanel;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.activation.ActivationInstantiator; import javax.swing.JTextArea;
import javax.swing.JProgressBar;
import java.awt.Font;
import javax.swing.JButton; /**
* @author 李祖林
*
*/
public class SumFrame implements ActionListener{ private JFrame frame;
JTextArea textA,textB;
JButton button;
JProgressBar progressBar; public static void main(String[] args) {
SumFrame sumFrame = new SumFrame();
} public SumFrame() { frame = new JFrame();
frame.setBounds(100, 100, 1043, 210);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(new BorderLayout(0, 0)); JLabel label = new JLabel("\u591A\u7EBF\u7A0B 20\u4E2A\u968F\u673A\u6574\u6570\u7684\u548C");
label.setFont(new Font("宋体", Font.BOLD, 18));
label.setHorizontalAlignment(SwingConstants.CENTER);
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\u7B49\u5F0F\r\n");
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, 10));
panel.add(textA); JLabel label_2 = new JLabel("\u8FDB\u5EA6\u6761");
label_2.setFont(new Font("宋体", Font.BOLD, 18));
label_2.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label_2); progressBar = new JProgressBar();
progressBar.setMaximum(20);
panel.add(progressBar); JLabel label_3 = new JLabel("\u8BA1\u7B97\u7ED3\u679C");
label_3.setFont(new Font("宋体", Font.BOLD, 18));
label_3.setHorizontalAlignment(SwingConstants.CENTER);
panel.add(label_3); textB = new JTextArea();
textB.setFont(new Font("Courier New", Font.BOLD, 15));
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) {
SumThread sumThread = new SumThread(); ReadThread readThread = new ReadThread(this);
Thread thread = new Thread(readThread);
thread.start();
} }

SumFrame

/**
* @author 李祖林
*
*/
public class ReadThread extends Thread {
SumFrame sumFrame; ReadThread(){}
ReadThread(SumFrame sumFrame){
this.sumFrame = sumFrame;
} public void run(){
while(true){
sumFrame.textA.setText(SumThread.string);
sumFrame.progressBar.setValue(SumThread.n);
sumFrame.textB.setText(String.valueOf(SumThread.sum));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.err.println("读取线程ReadThread发生错误!");
e.printStackTrace();
}
}
}
}

ReadThread

/**
* @author 李祖林
*
*/
public class SumThread extends Thread{
static double sum = 0;
static int n = 0;
static String string = "sum = 0;\nsum = 0";
int tmp; SumThread(){
Thread thread = new Thread(this);
thread.start();
} public void run(){
while(n<20){
n++;
tmp = (int)(Math.random()*1000);
sum += tmp;
string = string + "+" + tmp;
try {
Thread.sleep((int)Math.random()*600 + 300);
} catch (InterruptedException e) {
System.err.println("计算线程发生错误!");
e.printStackTrace();
}
}
}
}

SumThread

实验结果:

最新文章

  1. 专业上的常用的工具和类库集 By 老衣
  2. 原创一看便知、Maven创建web项目
  3. 《zw版&#183;Halcon-delphi系列原创教程》 酸奶自动分类脚本(机器学习、人工智能)
  4. 从苹果apns的feedback服务器获取推送失败的token
  5. Tomcat中部署WEB项目的四种方法
  6. C++ 编写 CorelDRAW CPG 插件例子(2)—ClearFill
  7. Nginx 独立图片服务器的搭建
  8. Spring Boot 学习之项目构建
  9. 阿里云API网关(11)外网访问 阿里云API网关内定义的API步骤:
  10. 翻译:CREATE PROCEDURE语句(已提交到MariaDB官方手册)
  11. 批量查询&quot;_mget&quot;
  12. css 规则中两个类连在一起是什么意思?
  13. strus2 struts.xml详解
  14. 20145331魏澍琛 《网络对抗技术》 PC平台逆向破解
  15. rman备份恢复命令之switch(转)
  16. C#抽象方法
  17. 关于javascript的各种高宽
  18. DPDK运行出现error while loading shared libraries的解決方法
  19. MySQL------如何卸载与安装
  20. js之留言字数限制

热门文章

  1. pxc 5.6 忘记 root 密码
  2. SDK更新失败问题解决
  3. SQL语句 case ... when
  4. Python——import与reload模块的区别
  5. go变量和数据类型
  6. 7.2 jmu-Java-06异常-02-使用异常机制处理异常输入 (5分)
  7. 运行一次node服务后,再次运行报错
  8. Java-收邮件
  9. Python GUI编程(Tkinter)Ⅱ
  10. jpa多对一映射