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"));
//图标变换宽度,太丑了,去掉了,设置为0
imageLabel.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 + "%");
}
});
}
}
标签:java,imageLabel,progressBar,源码,import,progress,JMeter,SplashScreen
From: https://blog.csdn.net/u012151594/article/details/139347995