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
- jmeter源码---Mainframe
- mainframe
- mainframe
- JMeter源码目录解析
- Jmeter源码编译运行
- jmeter源码集成eclipse
- jmeter源码---JmeterUtils
- jmeter源码---核心JMeterEngine
- jmeter源码---StandardJMeterEngine
- jmeter源码---HashTree
- [Jmeter系列]Jmeter源码编译步骤
- 从源码编译构建Jmeter
- jmeter源码编译(eclipse)
- eclipse导入jmeter-3.0源码
- 从源码编译构建Jmeter
- JMeter源码集成到Eclipse
- Jmeter源码解析(1)
- jmeter源码集成eclipse二次开发
- AES工具加密
- [译] 理解 LSTM 网络
- 【猿小白刷题】解救小易
- 享元模式
- VCS学习笔记
- jmeter源码---Mainframe
- mybatis配置的简单介绍(面试)
- 设计模式--责任链模式的实际开发实践
- VCS makefile文件
- zookeeper信息查看工具
- Faster RCNN 搭建问题解决
- 只懂JavaScript也可以开发VR/AR内容了!
- kvo 实践使用总结
- 很多资料的博客,常看