public void start() {
		if(!fTimer.isRunning()) {
			if(fAnimationTarget == null) {
				throw new IllegalStateException("Animation target is not set!");
			}
			fAnimationStartTime = System.nanoTime() / 1000000;
			final Runnable r = new Runnable() {
				public void run() {
					fAnimationTarget.begin(AnimationTimer.this);
				}
			};
			if(SwingUtilities.isEventDispatchThread()) {
				r.run();
			} else {
				SwingUtilities.invokeLater(r);
			}
			fTimer.start();
		}
	}