jmeterソース---Mainframe


概要


メニュー、テストツリー、GUIコンポーネントを含むjmeterメインインタフェースを作成します.ここで最も多く用いられるのは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 JSPlitPanel 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