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