public void paint(Graphics g) {
		this.setDoubleBuffered(true);
		Insets in = getInsets();
		g.translate(in.left, in.top);

		// System.out.println("paint();");

		if (isThinking)
			g.drawChars(thinkingText.toCharArray(), 0, thinkingText.length(),
					20, 20);
		// int[][] gameboard = logic.getGameBoard();
		int cols = gameBoard.length;
		int rows = gameBoard[0].length;

		for (int c = 0; c < cols; c++) {
			for (int r = 0; r < rows; r++) {
				int player = gameBoard[c][r];
				if (player == 0) // background
					g.drawImage(background, 100 + 100 * c, 100 + 100 * r, this);
				else if (player == 2) // red = player2
					g.drawImage(redPion, 100 + 100 * c, 100 + 100 * r, this);
				else
					// blue = player1
					g.drawImage(bluePion, 100 + 100 * c, 100 + 100 * r, this);
				g.drawImage(part, 100 + 100 * c, 100 + 100 * r, this);
				if (c == 0) {
					g.drawImage(border_left, 0, 100 + 100 * r, this);
					g.drawImage(border_right, cols * 100 + 100, 100 + 100 * r,
							this);
				}
			}
			g.drawImage(border_top, 100 + 100 * c, 0, this);
			if (c == chosenColumn)
				g.drawImage(arrow_active, 100 + 100 * c, 10, this);
			else
				g.drawImage(arrow, 100 + 100 * c, 10, this);
			g.drawImage(border_bottom, 100 + 100 * c, rows * 100 + 100, this);
		}
		g.drawImage(corner_left_top, 0, 0, this);
		g.drawImage(corner_left_bottom, 0, rows * 100 + 100, this);
		g.drawImage(corner_right_top, 100 + 100 * cols, 0, this);
		g.drawImage(corner_right_bottom, 100 + 100 * cols, rows * 100 + 100,
				this);

		if (winner == IGameLogic.Winner.PLAYER1)
			g.drawImage(blueWon, cols * 100 / 2 - 50, rows * 100 / 2 + 25, this);
		else if (winner == IGameLogic.Winner.PLAYER2)
			g.drawImage(redWon, cols * 100 / 2 - 50, rows * 100 / 2 + 25, this);
	}