public void paintComponent(Graphics graphics) {
			super.paintComponent(graphics);
			if (value == null || value.length == 0)
				return;
			double minValue = 0;
			double maxValue = 0;
			for (int i = 0; i < value.length; i++) {
				if (minValue > value[i])
					minValue = value[i];
				if (maxValue < value[i])
					maxValue = value[i];
			}
			maxValue = 60;
			Dimension dim = getSize();
			int clientWidth = dim.width;
			int clientHeight = dim.height;
			int barWidth = clientWidth / (value.length * 2);
			Font titleFont = new Font("Book Antiqua", Font.BOLD, 30);
			FontMetrics titleFontMetrics = graphics.getFontMetrics(titleFont);
			Font labelFont = new Font("Book Antiqua", Font.PLAIN, 20);
			FontMetrics labelFontMetrics = graphics.getFontMetrics(labelFont);
			int titleWidth = titleFontMetrics.stringWidth(title);
			int q = titleFontMetrics.getAscent();
			int p = (clientWidth - titleWidth) / 2;
			graphics.setFont(titleFont);
			graphics.drawString(title, p, q);
			int top = titleFontMetrics.getHeight();
			int bottom = labelFontMetrics.getHeight();
			if (maxValue == minValue)
				return;
			double scale = (clientHeight - top - bottom)
					/ (maxValue - minValue);
			q = clientHeight - labelFontMetrics.getDescent();
			graphics.setFont(labelFont);

			for (int j = 0; j < value.length; j++) {
				int backHeight = (int) ((60 - j * 20) * scale);
				int backY = (int) (maxValue + j * 20 * scale) - 23;
				int valueP = j * barWidth + 133 * (j + 1);
				int valueQ = top;
				int height = (int) (value[j] * scale);
				if (value[j] >= 0)
					valueQ += (int) ((maxValue - value[j]) * scale);
				else {
					valueQ += (int) (maxValue * scale);
					height = -height;
				}
				graphics.setColor(Color.gray);
				graphics.fillRect(valueP, backY, barWidth - 2, backHeight);

				float[] hsbvals = Color.RGBtoHSB(0, 178, 0, null);
				graphics.setColor(Color.getHSBColor(hsbvals[0], hsbvals[1],
						hsbvals[2]));
				graphics.fillRect(valueP, valueQ, barWidth - 2, height);

				graphics.setColor(Color.black);
				graphics.drawRect(valueP, backY, barWidth - 2, backHeight);
				int labelWidth = labelFontMetrics.stringWidth(languages[j]);
				p = j * barWidth + (barWidth - labelWidth) / 2 + 133 * (j + 1);
				graphics.drawString(languages[j], p, q);
			}
		}