Create a java Swing GUI application in a new Net beans proje
Solution
//TicTacToeFrame.java
import java.awt.*;
 import java.awt.event.*;
class TicTacToeFrame extends Frame implements ActionListener {
    public TicTacToeFrame(){
        final int width = 200, height = 200;
        setSize(width,height);
        setBackground(Color.white);
setLayout(new GridLayout(rows,cols));
       Button[][] board = getBoard();
        for(int r = 0; r < rows; r++){
            for(int c = 0; c < cols; c++){
                Button square = new Button(\"\");
                square.setActionCommand(String.valueOf(r*cols+c));
                square.addActionListener(this);
                board[r][c] = square;
                add(square);
            }
        }
    }
    public void actionPerformed(ActionEvent event){
        String command = event.getActionCommand();
        try{
            int value = Integer.parseInt(command);
            if((0 <= value) && (value < (rows*cols))){
                if(selectSquare(value)){
                    toggleSymbol();
                }
                else{
                    System.out.println(\"Square already taken.\");
                }
            }
        }
        catch(NumberFormatException e){
            System.out.println(\"Unknown command: \"+command);
        }
    }
    protected boolean selectSquare(int value){
        int row = value/cols;
        int col = value%cols;
        Button[][] board = getBoard();
        Button square = board[row][col];
       if(square.getLabel().equals(\"\")){
            square.setLabel(nextSymbol);
            repaint();
            return true;
        }
        else{
            return false;
        }
    }
    protected String getSymbol(){
        return nextSymbol;
    }
    protected void toggleSymbol(){
        if(nextSymbol == Nought){
            nextSymbol = Cross;
        }
        else{
            nextSymbol = Nought;
        }
    }
    protected Button[][] getBoard(){
        return board;
    }
    private static final int rows = 3, cols = 3;
    private static String Nought = \"O\", Cross = \"X\";
    private String nextSymbol = Nought;
    private Button[][] board = new Button[rows][cols];
 }
//TicTacToeRunner.java
package p2.TicTacToeFrame
public class TicTacToeRunner {
   BoardGame game_;
    int homeCol_;
    int homeRow_;
    int col_ = 0;
    int row_ = 0;
   public TicTacToeRunner(BoardGame game, int col, int row)
    {
        game_ = game;
        homeCol_ = col;
        homeRow_ = row;
    }
   public int run(int dcol, int drow)
    {
        int score = 1;
        this.goHome();
        score += this.forwardRun(dcol, drow);
        this.goHome();
        dcol = -dcol;
        drow = -drow;
        score += this.forwardRun(dcol, drow);
        return score;
    }
   
    private void goHome() {
        col_= homeCol_;
        row_ = homeRow_;
    }
   
    private int forwardRun(int dcol, int drow)
    {
        this.move(dcol, drow);
        if (this.samePlayer())
            return 1 + this.forwardRun(dcol, drow);
        else
            return 0;
    }
   
    private void move(int dcol, int drow) {
        col_ = col_ + dcol;
        row_ = row_ + drow;
    }
   private boolean samePlayer() {
        if (game_.inRange(col_,row_)) {
            Player home = game_.get(homeCol_, homeRow_);
            Player here = game_.get(col_, row_);
            return home == here;
        } else {
            return false;
        }
    }
 }



