Java拓撲圖開發-帶寬示例

/**
 * 區域圖表
 * 
 * @author Administrator
 * 
 */
public class AreaChart extends JComponent {

	public AreaChart() {

	}

	@Override
	protected void paintComponent(Graphics g) {
		Graphics2D g2d = (Graphics2D) g;

		int width = this.getWidth();
		int height = this.getHeight();
		g2d.setColor(this.background);
		g2d.fillRect(0, 0, width, height);

		double gridCellWidth = width * this.gridCellPercent;
		double gridCellHeight = height * this.gridCellPercent;

		g2d.setColor(this.gridColor);
		g2d.setStroke(this.gridStroke);
		for (int x = 0; x < width; x += gridCellWidth) {
			g2d.drawLine(x, 0, x, height);
		}
		for (int y = 0; y < height; y += gridCellHeight) {
			g2d.drawLine(0, y, width, y);
		}

		double x = 0;
		double y = height;
		final double delta = this.maxValue - this.minValue;

		GeneralPath path = new GeneralPath();
		path.moveTo(x, y);

		for (int index = 0; index < this.values.size(); index++) {
			double value = this.values.get(index);
			x += gridCellWidth;
			y = height - (value - this.minValue) / delta * height;
			path.lineTo(x, y);
		}

		path.lineTo(width, height);
		path.closePath();

		g2d.setColor(this.areaColor);
		g2d.fill(path);
	}

	public void setBackground(Color background) {
		this.background = background;
	}

	public void addValue(double value) {
		if (this.values.size() >= maxCount) {
			this.values.remove(0);
		}

		if (this.maxValue < value) {
			this.maxValue = value;
		}

		if (this.minValue > value) {
			this.minValue = value;
		}

		this.values.add(value);
	}

	public void setValues(List<Double> values) {
		this.values = values;
		for (int index = 0; index < values.size(); index++) {
			double value = values.get(index);
			
			if (this.maxValue < value) {
				this.maxValue = value;
			}

			if (this.minValue > value) {
				this.minValue = value;
			}
		}
	}

	public void setDrawGrid(boolean drawGrid) {
		this.drawGrid = drawGrid;
	}

	public void setGridColor(Color gridColor) {
		this.gridColor = gridColor;
	}

	public void setAreaColor(Color areaColor) {
		this.areaColor = areaColor;
	}

	public void setGridCellPercent(double gridCellPercent) {
		this.gridCellPercent = gridCellPercent;
	}

	/**
	 * 背景色
	 */
	Color background = Color.DARK_GRAY;

	/**
	 * 面積色
	 */
	Color areaColor = Color.green;

	/**
	 * 網格顏色
	 */
	Color gridColor = Color.LIGHT_GRAY;

	/**
	 * 繪製網格
	 */
	boolean drawGrid = true;

	/**
	 * 網格大小
	 */
	double gridCellPercent = 0.1;

	/**
	 * 
	 */
	Stroke gridStroke = new BasicStroke(1);

	/**
	 * 值
	 */
	List<Double> values = new ArrayList<Double>();

	/**
	 * 最大數量
	 */
	int maxCount = 10;

	/**
	 * 最大值
	 */
	double maxValue = Double.MIN_VALUE;

	/**
	 * 最小值
	 */
	double minValue = Double.MAX_VALUE;
}


void init() {

		NetworkNode Phoenix = new NetworkNode("Phoenix", NetworkNode.Type.BSC_Image);
		Phoenix.setName("Phoenix");
		addNetNode(box, Phoenix, 332654, 1120424);

		NetworkNode Los_Angeles = new NetworkNode("Los Angeles", NetworkNode.Type.Terminal);
		Los_Angeles.setName("Los Angeles");
		addNetNode(box, Los_Angeles, 340308, 1181434);

		NetworkNode San_Francisco = new NetworkNode("San Francisco", NetworkNode.Type.MSC_Image);
		San_Francisco.setName("San Francisco");
		addNetNode(box, San_Francisco, 374630, 1222506);
		NetworkNode Denver = new NetworkNode("Denver", NetworkNode.Type.NMW_Image);
		Denver.setName("Denver");
		addNetNode(box, Denver, 394421, 1045903);

		NetworkNode Jacksonville = new NetworkNode("Jacksonville", NetworkNode.Type.MSC_Image);
		Jacksonville.setName("Jacksonville");
		addNetNode(box, Jacksonville, 301955, 813921);
		NetworkNode Chicago = new NetworkNode("Chicago", NetworkNode.Type.Router);
		Chicago.setName("Chicago");
		addNetNode(box, Chicago, 415100, 873900);

		NetworkNode New_Orleans = new NetworkNode("New Orleans", NetworkNode.Type.Server);
		New_Orleans.setName("New Orleans");
		addNetNode(box, New_Orleans, 295716, 900430);

		NetworkNode Detroit = new NetworkNode("Detroit", NetworkNode.Type.Terminal);
		Detroit.setName("Detroit");
		addNetNode(box, Detroit, 421953, 830245);
		NetworkNode Kansas_City = new NetworkNode("Kansas City", NetworkNode.Type.Terminal);
		Kansas_City.setName("Kansas City");
		addNetNode(box, Kansas_City, 390559, 943442);
		NetworkNode Charlotte = new NetworkNode("Charlotte", NetworkNode.Type.MD);
		Charlotte.setName("Charlotte");
		addNetNode(box, Charlotte, 351337, 805036);
		NetworkNode Albuquerque = new NetworkNode("Albuquerque", NetworkNode.Type.BSC_Image);
		Albuquerque.setName("Albuquerque");
		addNetNode(box, Albuquerque, 350504, 1063902);
		NetworkNode New_York = new NetworkNode("New York", NetworkNode.Type.BSC_Image);
		New_York.setName("New York");
		addNetNode(box, New_York, 404251, 740023);

		NetworkNode Memphis = new NetworkNode("Memphis", NetworkNode.Type.MD_Image);
		Memphis.setName("Memphis");
		addNetNode(box, Memphis, 350858, 900256);
		NetworkNode Nashville = new NetworkNode("Nashville", NetworkNode.Type.BSC_Image);
		Nashville.setName("Nashville");
		addNetNode(box, Nashville, 360957, 864704);
		NetworkNode Dallas = new NetworkNode("Dallas", NetworkNode.Type.MSC_Image);
		Dallas.setName("Dallas");
		addNetNode(box, Dallas, 324700, 964800);
		NetworkNode El_Paso = new NetworkNode("El Paso", NetworkNode.Type.NMW_Image);
		El_Paso.setName("El Paso");
		addNetNode(box, El_Paso, 314531, 1062911);
		NetworkNode Houston = new NetworkNode("Houston", NetworkNode.Type.Terminal);
		Houston.setName("Houston");
		addNetNode(box, Houston, 294547, 952147);
		NetworkNode San_Antonio = new NetworkNode("San Antonio", NetworkNode.Type.Terminal);
		San_Antonio.setName("San Antonio");
		addNetNode(box, San_Antonio, 292526, 982936);
		NetworkNode Virginia_Beach = new NetworkNode("Virginia Beach", NetworkNode.Type.Router);
		Virginia_Beach.setName("Virginia Beach");
		addNetNode(box, Virginia_Beach, 365110, 755842);
		NetworkNode Seattle = new NetworkNode("Seattle", NetworkNode.Type.NMW_Image);
		Seattle.setName("Seattle");
		addNetNode(box, Seattle, 473623, 1221951);

		addNetLink(box, NetworkLink.Media.Fiber, New_York, Virginia_Beach);
		addNetLink(box, null, New_York, Detroit);
		addNetLink(box, NetworkLink.Media.CNET, Charlotte, Virginia_Beach);
		addNetLink(box, NetworkLink.Media.Electrical, Charlotte, Jacksonville);
		addNetLink(box, NetworkLink.Media.Fiber, Charlotte, Nashville);
		addNetLink(box, NetworkLink.Media.CNET, Memphis, Nashville);
		addNetLink(box, NetworkLink.Media.Electrical, New_Orleans, Nashville);
		addNetLink(box, NetworkLink.Media.Fiber, Jacksonville, Nashville);
		addNetLink(box, null, Detroit, Chicago);
		addNetLink(box, NetworkLink.Media.CNET, Memphis, Chicago);
		addNetLink(box, NetworkLink.Media.Electrical, Kansas_City, Chicago);
		addNetLink(box, NetworkLink.Media.Fiber, Memphis, Dallas);
		addNetLink(box, NetworkLink.Media.CNET, Kansas_City, Dallas);
		addNetLink(box, NetworkLink.Media.Electrical, San_Antonio, Dallas);
		addNetLink(box, NetworkLink.Media.Fiber, Houston, Dallas);
		addNetLink(box, NetworkLink.Media.CNET, Denver, Dallas);
		addNetLink(box, NetworkLink.Media.Electrical, Albuquerque, Dallas);
		addNetLink(box, NetworkLink.Media.Fiber, Albuquerque, Denver);
		addNetLink(box, null, Albuquerque, El_Paso);
		addNetLink(box, NetworkLink.Media.Electrical, Albuquerque, Phoenix);
		addNetLink(box, null, Los_Angeles, Phoenix);
		addNetLink(box, NetworkLink.Media.CNET, San_Francisco, Phoenix);
		addNetLink(box, NetworkLink.Media.Fiber, Seattle, San_Francisco);
		addNetLink(box, null, Seattle, Denver);
		addNetLink(box, NetworkLink.Media.CNET, San_Francisco, Denver);

		network.setBackground(new ImageBackground("/demo/resource/images/us_map.png"));
	}

設置節點樣式
		node.putLabelColor(Color.lightGray);

		node.addAttachment("areachart");
		List<Double> values = new ArrayList<Double>();
		for (int index = 1; index < 10; index++) {
			values.add(1.0 * BladeUtil.getRandomInt(100));
		}

		node.putAttachmentXOffset(-15);
		node.putAttachmentPosition(BladeConst.POSITION_TOPLEFT);
		node.putAttachmentProperty("areachart", "values", values);
		node.putAttachmentProperty("areachart", "background", Color.black);
		node.putAttachmentProperty("areachart", "gridcolor", Color.white);
		node.putAttachmentProperty("areachart", "areacolor", Color.red);
		node.putAttachmentProperty("areachart", "gridcellpercent", 0.25);


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章