JavaFX controller for a poker game
Logic: 

If statements differs only in 2 variables: canvasPlayerX and playerCardsWidthX. 

playerCardsWidthX: looks like this var can be converted to local, just like playerCardsHeightX;

canvasPlayerX: you can do one little trick here - add player canvases to a list in initialize() method, and then refer to the i-th player canvas as playersCanvases.get(i);

Moreover, your code didnt even compile, because GameController should implement initialize(..) method;

Codestyle:


playerCardsWidthX - in your code, its not width of player cards, its coordinate, where to draw next card. Consider renaming;
in constructor, exception is caught, and stacktrace is printed, but after that, program will continue its flow. Is this what you want? (see code below for possible solution). 
extract constants into private static final fields




public class GameController implements Initializable {
public static final int CARD_WIDTH = 60;
public static final int CARD_HEIGHT = 80;
public static final int CARD_SPACING = 15;

public static final int CARDS_X_DIFF = CARD_WIDTH + CARD_SPACING;

@FXML
private Canvas canvasBoard;
@FXML
private Canvas canvasPlayer1;
@FXML
private Canvas canvasPlayer2;
@FXML
private Canvas canvasPlayer3;
@FXML
private Canvas canvasPlayer4;

private List&lt;Canvas&gt; playersCanvases;

private TexasHoldem game;
private IPlayer board;

public GameController() {
    try {
        game = new TexasHoldem();
    } catch (Exception e) {
        e.printStackTrace();
        Platform.exit();
    }
}

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
    // in initialize method, because in constructor canvases are not assigned(== null)
    playersCanvases = Arrays.asList(canvasPlayer1, canvasPlayer2, canvasPlayer3, canvasPlayer4);
}

private void showBoardCards() {
    board = game.getBoard();
    showCards(50, board.getCards(), canvasBoard.getGraphicsContext2D());
}

private void showPlayersCards() {
    List&lt;IPlayer&gt; players = game.getPlayers();
    for (int i = 0; i &lt; players.size(); i++) {
        IPlayer player = players.get(i);
        showCards(0, player.getCards(), playersCanvases.get(i).getGraphicsContext2D());
    }
}

private void showCards(int xOffset, List&lt;ICard&gt; cards, GraphicsContext gc) {
    int cardY = 0;
    int cardX = xOffset;
    for (ICard c : cards) {
        Image image = new Image(c.getFilename());
        gc.drawImage(image, cardX, cardY, CARD_WIDTH, CARD_HEIGHT);
        cardX += CARDS_X_DIFF;
    }
}


}