⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphvisualizer.java

📁 测试工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	 *            its preferred width. This should be set to the maximum number
	 *            of digits that are expected to be necessary to hold the label
	 *            value.
	 * 
	 * @see #createYAxisPanel(String, JTextField)
	 * 
	 * @return a text field configured to be used in the Y axis
	 */
	private JTextField createYAxisField(int length) {
		JTextField field = new JTextField(length);
		field.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
		field.setEditable(false);
		field.setForeground(Color.black);
		field.setBackground(getBackground());
		field.setHorizontalAlignment(JTextField.RIGHT);
		return field;
	}

	/**
	 * Creates a panel for an entire Y axis label. This includes the dynamic
	 * value as well as the unit label.
	 * 
	 * @param labelResourceName
	 *            the name of the label resource. This is used to look up the
	 *            label text using {@link JMeterUtils#getResString(String)}.
	 * 
	 * @return a panel containing both the dynamic and static parts of a Y axis
	 *         label
	 */
	private JPanel createYAxisPanel(String labelResourceName, JTextField field) {
		JPanel panel = new JPanel(new FlowLayout());
		JLabel label = new JLabel(JMeterUtils.getResString(labelResourceName));

		panel.add(field);
		panel.add(label);
		return panel;
	}

	/**
	 * Creates a panel which allows the user to choose which graphs to display.
	 * This panel consists of a check box for each type of graph (current
	 * sample, average, deviation, and throughput).
	 * 
	 * @return a panel allowing the user to choose which graphs to display
	 */
	private JPanel createChoosePanel() {
		JPanel chooseGraphsPanel = new JPanel();

		chooseGraphsPanel.setLayout(new FlowLayout());
		JLabel selectGraphsLabel = new JLabel(JMeterUtils.getResString("graph_choose_graphs")); //$NON-NLS-1$
		data = createChooseCheckBox("graph_results_data", Color.black); // $NON-NLS-1$
		average = createChooseCheckBox("graph_results_average", Color.blue); // $NON-NLS-1$
		deviation = createChooseCheckBox("graph_results_deviation", Color.red); // $NON-NLS-1$
		throughput = createChooseCheckBox("graph_results_throughput", JMeterColor.dark_green); // $NON-NLS-1$
		median = createChooseCheckBox("graph_results_median", JMeterColor.purple); // $NON-NLS-1$

		chooseGraphsPanel.add(selectGraphsLabel);
		chooseGraphsPanel.add(data);
		chooseGraphsPanel.add(average);
		chooseGraphsPanel.add(median);
		chooseGraphsPanel.add(deviation);
		chooseGraphsPanel.add(throughput);
		return chooseGraphsPanel;
	}

	/**
	 * Creates a check box configured to be used to in the choose panel allowing
	 * the user to select whether or not a particular kind of graph data will be
	 * displayed.
	 * 
	 * @param labelResourceName
	 *            the name of the label resource. This is used to look up the
	 *            label text using {@link JMeterUtils#getResString(String)}.
	 * @param color
	 *            the color used for the checkbox text. By convention this is
	 *            the same color that is used to draw the graph and for the
	 *            corresponding info field.
	 * 
	 * @return a checkbox allowing the user to select whether or not a kind of
	 *         graph data will be displayed
	 */
	private JCheckBox createChooseCheckBox(String labelResourceName, Color color) {
		JCheckBox checkBox = new JCheckBox(JMeterUtils.getResString(labelResourceName));
		checkBox.setSelected(true);
		checkBox.addItemListener(this);
		checkBox.setForeground(color);
		return checkBox;
	}

	/**
	 * Creates a scroll pane containing the actual graph of the results.
	 * 
	 * @return a scroll pane containing the graph
	 */
	private Component createGraphPanel() {
		JScrollPane graphScrollPanel = makeScrollPane(graph, JScrollPane.VERTICAL_SCROLLBAR_NEVER,
				JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		graphScrollPanel.setViewportBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
		graphScrollPanel.setPreferredSize(graphScrollPanel.getMinimumSize());

		return graphScrollPanel;
	}

	/**
	 * Creates a panel which numerically displays the current graph values.
	 * 
	 * @return a panel showing the current graph values
	 */
	private Box createGraphInfoPanel() {
		Box graphInfoPanel = Box.createHorizontalBox();

		noSamplesField = createInfoField(Color.black, 6);
		dataField = createInfoField(Color.black, 5);
		averageField = createInfoField(Color.blue, 5);
		deviationField = createInfoField(Color.red, 5);
		throughputField = createInfoField(JMeterColor.dark_green, 15);
		medianField = createInfoField(JMeterColor.purple, 5);

		graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_no_samples", noSamplesField), // $NON-NLS-1$
				noSamplesField, createInfoLabel("graph_results_deviation", deviationField), deviationField)); // $NON-NLS-1$
		graphInfoPanel.add(Box.createHorizontalGlue());

		graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_latest_sample", dataField), dataField, // $NON-NLS-1$
				createInfoLabel("graph_results_throughput", throughputField), throughputField)); // $NON-NLS-1$
		graphInfoPanel.add(Box.createHorizontalGlue());

		graphInfoPanel.add(createInfoColumn(createInfoLabel("graph_results_average", averageField), averageField, // $NON-NLS-1$
				createInfoLabel("graph_results_median", medianField), medianField)); // $NON-NLS-1$
		graphInfoPanel.add(Box.createHorizontalGlue());
		return graphInfoPanel;
	}

	/**
	 * Creates one of the fields used to display the graph's current values.
	 * 
	 * @param color
	 *            the color used to draw the value. By convention this is the
	 *            same color that is used to draw the graph for this value and
	 *            in the choose panel.
	 * @param length
	 *            the number of digits which the field should be able to display
	 * 
	 * @return a text field configured to display one of the current graph
	 *         values
	 */
	private JTextField createInfoField(Color color, int length) {
		JTextField field = new JTextField(length);
		field.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
		field.setEditable(false);
		field.setForeground(color);
		field.setBackground(getBackground());

		// The text field should expand horizontally, but have
		// a fixed height
		field.setMaximumSize(new Dimension(field.getMaximumSize().width, field.getPreferredSize().height));
		return field;
	}

	/**
	 * Creates a label for one of the fields used to display the graph's current
	 * values. Neither the label created by this method or the
	 * <code>field</code> passed as a parameter is added to the GUI here.
	 * 
	 * @param labelResourceName
	 *            the name of the label resource. This is used to look up the
	 *            label text using {@link JMeterUtils#getResString(String)}.
	 * @param field
	 *            the field this label is being created for.
	 */
	private JLabel createInfoLabel(String labelResourceName, JTextField field) {
		JLabel label = new JLabel(JMeterUtils.getResString(labelResourceName));
		label.setForeground(field.getForeground());
		label.setLabelFor(field);
		return label;
	}

	/**
	 * Creates a panel containing two pairs of labels and fields for displaying
	 * the current graph values. This method exists to help with laying out the
	 * fields in columns. If one or more components are null then these
	 * components will be represented by blank space.
	 * 
	 * @param label1
	 *            the label for the first field. This label will be placed in
	 *            the upper left section of the panel. If this parameter is
	 *            null, this section of the panel will be left blank.
	 * @param field1
	 *            the field corresponding to the first label. This field will be
	 *            placed in the upper right section of the panel. If this
	 *            parameter is null, this section of the panel will be left
	 *            blank.
	 * @param label2
	 *            the label for the second field. This label will be placed in
	 *            the lower left section of the panel. If this parameter is
	 *            null, this section of the panel will be left blank.
	 * @param field2
	 *            the field corresponding to the second label. This field will
	 *            be placed in the lower right section of the panel. If this
	 *            parameter is null, this section of the panel will be left
	 *            blank.
	 */
	private Box createInfoColumn(JLabel label1, JTextField field1, JLabel label2, JTextField field2) {
		// This column actually consists of a row with two sub-columns
		// The first column contains the labels, and the second
		// column contains the fields.
		Box row = Box.createHorizontalBox();
		Box col = Box.createVerticalBox();
		col.add(label1 != null ? label1 : Box.createVerticalGlue());
		col.add(label2 != null ? label2 : Box.createVerticalGlue());
		row.add(col);

		row.add(Box.createHorizontalStrut(5));

		col = Box.createVerticalBox();
		col.add(field1 != null ? field1 : Box.createVerticalGlue());
		col.add(field2 != null ? field2 : Box.createVerticalGlue());
		row.add(col);

		row.add(Box.createHorizontalStrut(5));

		return row;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -