jmeter源码---Mainframe

来源:互联网 发布:大数据核查汇报 编辑:程序博客网 时间:2024/05/21 22:51

概述

创建jmeter主界面,包含菜单、测试树、GUI组件;这里用到最多的是swing相关知识进行主界面的布局,涉及的组件有JTree、JButton、JPanel、JScrollPane、JTextArea、JLabel、JDialog、JSplitPane、JCheckBox、JFileChooser等

介绍

该类实现了TestStateListener, Remoteable, DropTargetListener, Clearable, ActionListener
其中有运行主要的方法MainFrame(TreeModel treeModel, JMeterTreeListener treeListener)、init()、testStarted()、testEnded()

设置默认图标

private final String iconSize = JMeterUtils.getPropDefault(JMeterToolBar.TOOLBAR_ICON_SIZE, JMeterToolBar.DEFAULT_TOOLBAR_ICON_SIZE); /** An image which is displayed when a test is running. */private final ImageIcon runningIcon = JMeterUtils.getImage("status/" + iconSize +"/user-online-2.png");/** An image which is displayed when a test is not currently running. */private final ImageIcon stoppedIcon = JMeterUtils.getImage("status/" + iconSize +"/user-offline-2.png");/** An image which is displayed to indicate FATAL, ERROR or WARNING. */private final ImageIcon warningIcon = JMeterUtils.getImage("status/" + iconSize +"/pictogram-din-w000-general.png")

构造函数

public MainFrame(TreeModel treeModel, JMeterTreeListener treeListener) {……}

创建测试树,并绑定鼠标和键盘事件、热键等

private JTree makeTree(TreeModel treeModel, JMeterTreeListener treeListener) {    ……    treeListener.setJTree(treevar);    treevar.addTreeSelectionListener(treeListener);    treevar.addMouseListener(treeListener);    treevar.addKeyListener(treeListener);    // enable drag&drop, install a custom transfer handler    treevar.setDragEnabled(true);    treevar.setDropMode(DropMode.ON_OR_INSERT);    treevar.setTransferHandler(new JMeterTreeTransferHandler());    addQuickComponentHotkeys(treevar);    return treevar;}

init函数

初始化GUI组件和布局:
JPanel all:整个界面
setJMenuBar(menuBar):设置菜单栏
createToolBar:创建工具栏
JSplitPane treeAndMain:创建分离组件将treePanel和topAndDown左右分割
createTreePanel :创建左侧展示数面板treePanel
JSplitPane topAndDown:创建分离组件将mainPanel和logPanel上下分割
createMainPanel:创建主面板mainPanel
createLoggerPanel:创建日志面板logPanel
绑定监听事件

private void init() {    menuBar = new JMeterMenuBar();    setJMenuBar(menuBar);    JPanel all = new JPanel(new BorderLayout());    all.add(createToolBar(), BorderLayout.NORTH);    JSplitPane treeAndMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);    treePanel = createTreePanel();    treeAndMain.setLeftComponent(treePanel);    JSplitPane topAndDown = new JSplitPane(JSplitPane.VERTICAL_SPLIT);    topAndDown.setOneTouchExpandable(true);    topAndDown.setDividerLocation(0.8);    topAndDown.setResizeWeight(.8);    topAndDown.setContinuousLayout(true);    topAndDown.setBorder(null);     if (!DISPLAY_LOGGER_PANEL) {        topAndDown.setDividerSize(0);    }    mainPanel = createMainPanel();    logPanel = createLoggerPanel();    errorsAndFatalsCounterLogTarget = new ErrorsAndFatalsCounterLogTarget();    GuiPackage.getInstance().getLogEventBus().registerEventListener(logPanel);    GuiPackage.getInstance().getLogEventBus().registerEventListener(errorsAndFatalsCounterLogTarget);    topAndDown.setTopComponent(mainPanel);    topAndDown.setBottomComponent(logPanel);    treeAndMain.setRightComponent(topAndDown);    treeAndMain.setResizeWeight(.2);    treeAndMain.setContinuousLayout(true);    all.add(treeAndMain, BorderLayout.CENTER);    getContentPane().add(all);    tree.setSelectionRow(1);    addWindowListener(new WindowHappenings());    // Building is complete, register as listener    GuiPackage.getInstance().registerAsListener();    setTitle(DEFAULT_TITLE);    setIconImage(JMeterUtils.getImage("icon-apache.png").getImage());    setWindowTitle(); // define AWT WM_CLASS string    refreshErrorsTimer.start();}

学习记录备忘

原文连接 http://blog.csdn.net/yue530tomtom/article/details/77994423

原创粉丝点击