On my educational trek through the capabilities of JavaFX, I thought it would be a valuable challenge to create Tic Tac Toe. It took me far longer than expected to get this far, but despite likely being even further from completion, I'd like a review on the current state of things and on anything my 'blind coding' unwittingly implemented unconventionally/inefficiently/just plain weirdly. Some names may seem strange, but that could be due to my editing the image-related code to point to URLs rather than local files for the sake of this post. **TicTacToe main class**: import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.GridPane; import javafx.stage.Stage; public class TicTacToe extends Application { static Player player = Player.O_PLAYER; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { Button[] cells = new Button[9]; for (int i = 0; i < cells.length; i++) { cells[i] = new Button("", new ImageView(new Image("http://i.imgur.com/KAQPbPd.png"))); registerOnAction(cells[i]); } GridPane board = new GridPane(); for (int row = 1, col = 1, cell = 0; row <= 3; row++, col -=2) { board.add(cells[cell++], row, col++); board.add(cells[cell++], row, col++); board.add(cells[cell++], row, col); } Scene scene = new Scene(board); stage.setScene(scene); stage.setTitle("TicTacToe By Legato"); stage.getIcons().add(new Image("http://i.imgur.com/gxhJkc0.png")); stage.show(); } private static Image retrieveMarker() { player = player == Player.X_PLAYER ? Player.O_PLAYER : Player.X_PLAYER; return player.marker(); } private static void registerOnAction(Button button) { button.setOnAction(e -> button.setGraphic(new ImageView(retrieveMarker())) ); } } **Player enum**: import javafx.scene.image.Image; import javafx.scene.image.ImageView; public enum Player { X_PLAYER(new ImageView(new Image("http://i.imgur.com/HY6GeUY.png"))), O_PLAYER(new ImageView(new Image("http://i.imgur.com/KgHHxL6.png"))); private final ImageView view; Player(ImageView view) { this.view = view; } public Image marker() { return view.getImage(); } @Override public String toString() { return name().charAt(0) + name().substring(2).toLowerCase(); } } **Follow-ups**: 1. Completed [Tic-Tac-Toe][1]. 2. [Tic-Tactics][2]. [1]: https://codereview.stackexchange.com/questions/95706/tic-tac-towards-fx [2]: https://codereview.stackexchange.com/questions/101253/ultimate-tic-tac-toe-a-k-a-tic-tactics