@Override
	protected void paintComponent(final Graphics g) {
		int pos = 0;
		for (int row = 0; row < this.dimension; ++row) {
			for (int col = 0; col < this.dimension; ++col) {
				if (this.state[pos] != 0) {
					g.setColor(Color.blue);
					g.fill3DRect(col * this.imageWidth, row * this.imageHeight, this.imageWidth,
							this.imageHeight, true);
					final Image image = this.imageArray[this.state[pos]];
					g.drawImage(image, col * this.imageWidth, row * this.imageHeight,
							this.imageWidth, this.imageHeight, null);
				} else {
					g.setColor(Color.black);
					g.fillRect(col * this.imageWidth, row * this.imageHeight, this.imageWidth,
							this.imageHeight);
				}
				++pos;
			}
		}
		if (!this.animationDone) {
			paintMovingTileRegion(g);
		}
	}