当前位置: 首页 > news >正文

JMeter源码解析之SplashScreen.java

JMeter源码解析之SplashScreen.java完结

SplashScreen.java主要作用

JMeter GUI启动加载界面。

文件路径

路径地址:…\apache-jmeter-5.1\src\core\org\apache\jmeter\SplashScreen.java

关于SplashScreen内容中的代码解析

package org.apache.jmeter;import java.awt.*;import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import javax.swing.border.EmptyBorder;import org.apache.jmeter.util.JMeterUtils;/*** Splash Screen* JMeter启动界面介绍* @since 3.2*/
public class SplashScreen extends JWindow {private static final long serialVersionUID = 1L;private BorderLayout borderLayout = new BorderLayout();private JLabel imageLabel = new JLabel();private JProgressBar progressBar = new JProgressBar(0, 100);/*** Constructor*/public SplashScreen() {//加载JMeter图标,这里修改为自己需要的定制内容imageLabel.setIcon(JMeterUtils.getImage("jmeterlogo.png"));
//        imageLabel.setIcon(JMeterUtils.getImage("jmeterlogo.png"));//图标变换宽度,太丑了,去掉了,设置为0imageLabel.setBorder(new EmptyBorder(0, 0, 0, 0));//展示界面设置setLayout(borderLayout);//图标设置在中间add(imageLabel, BorderLayout.CENTER);//进度条在最下面add(progressBar, BorderLayout.SOUTH);pack();//设定组件位置setLocationRelativeTo(null);}/*** Show screen*/public void showScreen() {//SwingUtilities.invokeLater()在把可运行的对象放入队列后就返回,方法使事件派发线程上的可运行对象排队SwingUtilities.invokeLater(() -> {setVisible(true);setAlwaysOnTop(true);});}/*** Close splash*/public void close() {SwingUtilities.invokeLater(() -> {//dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源setVisible(false);dispose();});}/*** @param progress Loading progress*/public void setProgress(final int progress) {SwingUtilities.invokeLater(() -> {progressBar.setValue(progress);progressBar.setBackground(Color.blue);/*** 这个功能是自己加的,主要有两个功能* 1.显示加载进度条中间文字* 2.目的是能够展示具体的进度,* */progressBar.setStringPainted(true);if(progress == 100){progressBar.setString("JMeter界面加载完成,当前进度:" + progress + "%,启动界面即将关闭");} else {progressBar.setString("JMeter界面正在加载中,当前进度:" + progress + "%");}});}
}

相关文章:

  • [每日一题]170:分糖果 II
  • 今日好料推荐(ARM嵌入式)
  • chatgpt4和文心一言的简单对比
  • 某红书旋转滑块验证码分析与协议算法实现(高通过率)
  • C++ B (1124) : 斐波那契数列第n项Plus
  • SpringBoot+百度地图+Mysql实现中国地图可视化
  • RabbitMQ-直连交换机(direct)使用方法
  • Linux--线程的分离、线程库的地址关系的理解、线程的简单封装(二)
  • Kubernetes 之 Secret
  • App开发前端开发语言:深度解析与应用探索
  • MySQL—函数—函数小结
  • 民国漫画杂志《时代漫画》第33期.PDF
  • 必看——怎么让网站实现HTTPS访问?
  • 用java实现客服聊天+网络爬虫下载音乐(java网络编程,io,多线程)
  • 安卓组合控件(底部标签栏、顶部导航栏、增强型列表、升级版翻页)
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 【comparator, comparable】小总结
  • Js基础知识(一) - 变量
  • js写一个简单的选项卡
  • js作用域和this的理解
  • node学习系列之简单文件上传
  • PHP的类修饰符与访问修饰符
  • Python爬虫--- 1.3 BS4库的解析器
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • Yeoman_Bower_Grunt
  • 创建一种深思熟虑的文化
  • 基于webpack 的 vue 多页架构
  • 技术胖1-4季视频复习— (看视频笔记)
  • 利用jquery编写加法运算验证码
  • 如何编写一个可升级的智能合约
  • 系统认识JavaScript正则表达式
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 追踪解析 FutureTask 源码
  • ​Spring Boot 分片上传文件
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • #LLM入门|Prompt#3.3_存储_Memory
  • #进阶:轻量级ORM框架Dapper的使用教程与原理详解
  • (0)Nginx 功能特性
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (规划)24届春招和25届暑假实习路线准备规划
  • (力扣)循环队列的实现与详解(C语言)
  • (一)kafka实战——kafka源码编译启动
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)项目管理杂谈-我所期望的新人
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 8.0 发布到 IIS
  • .Net core 6.0 升8.0
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .NET是什么
  • @JsonSerialize注解的使用
  • @PostConstruct 注解的方法用于资源的初始化
  • @RequestParam详解
  • [ C++ ] STL---stack与queue