private void draw(Graphics2D g) {

		g.setFont(font);

		Dimension dim = getSize();

		if (knob == null)
			knob = new Rectangle(0, 0, dim.width / 5, dim.height);

		g.setColor(getBackground());
		g.fillRect(0, 0, dim.width, dim.height);
		g.setColor(Color.white);
		g.fillRect(5, 5, dim.width - knob.width, dim.height - 10);
		g.setColor(Color.blue);
		g.fillRect(dim.width - knob.width + 1, 5, knob.width - 6, dim.height - 9);
		g.drawRect(5, 5, dim.width - knob.width, dim.height - 10);

		calculateFillLocator();
		g.setColor(SystemColor.controlShadow);
		g.fillRect(6, 7, fillLocator, dim.height - 13);
		int i = 9 + flasher;
		while (i <= fillLocator) {
			g.drawLine(i, 5, i, 7);
			g.drawLine(i, dim.height - 6, i, dim.height - 8);
			i += 3;
		}

		if (grabber == null) {
			grabber = new RoundRectangle2D.Float(knob.x + 2, knob.y + 2, knob.width - 4, knob.height - 5, 8, 8);
		}
		else {
			grabber.setRoundRect(knob.x + 2, knob.y + 2, knob.width - 4, knob.height - 5, 8, 8);
		}
		g.setColor(SystemColor.control);
		g.fill(grabber);
		g.setColor(isEnabled() ? Color.blue : SystemColor.textInactiveText);
		g.draw(grabber);

		FontMetrics fm = g.getFontMetrics();
		int h = fm.getAscent();
		g.setColor(isEnabled() ? SystemColor.controlText : SystemColor.textInactiveText);
		String s = "0";
		if (movie.length() > 0) {
			if (currentFrame == movie.getCapacity()) {
				s = "" + currentFrame;
			}
			else {
				s = "" + (currentFrame + 1);
			}
		}
		int w = fm.stringWidth(s);
		g.drawString(s, knob.x + knob.width / 2 - w / 2, knob.y + knob.height / 2 + h / 4);

		if (getBorder() != null)
			paintBorder(g);

	}