JMeter源码解析之SplashScreen.java

发布于:2024-06-06 ⋅ 阅读:(80) ⋅ 点赞:(0)

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 + "%");
            }
        });
    }
}


网站公告

今日签到

点亮在社区的每一天
去签到