Então, primeira coisa…
Você não criou os construtores… Por exemplo, na classe Principal, você criou a classe TicTacToe (na verdade uma instância da classe) com a seguinte chamada:
TicTacToe tic = new TicTacToe();
Porém, sua classe TicTacToe não possui um construtor, mas possui o método ‘public void TicTacToe()’, por isso você tem que chamar o método através do 'tic.TicTacToe()'
Basicamente falando, o construtor faz com que o método seja chamado sem precisar especificar o método… assim:
public class TicTacToe {
public TicTacToe(){ //sem o void
....
}
}
então ao criar uma instância da classe TicTacToe não será preciso chamar o método construtor, ele será chamado automaticamente, ou seja, não precisa utilizar o ‘tic.TicTacToe()’ Assim como na classe Play… entendeu?
Agora vamos a segunda parte,
Você cria uma classe Play e cria uma String detail com o valor NULL… Quando você manda adicionar os nomes, o valor da String detail ainda está NULL…
O nome dos jogadores foram setados na classe TicTacToe, e em nenhum momento você passou estes valores para a classe Play
Para isto você pode utilizar os métodos Getter and Setters, ou passar o valor nos construtores (acho que é o mais próximo do que você quer)
Faça o seguinte:
public class Play{
.....
private String playerone;
private String playertwo;
....
public Play(String jogador1, String jogador2)
{
this.playerone = jogador1;
this.playertwo = jogador2;
setTitle("Game simple on Java!");
.....
}
E na classe TicTacToe ao criar a classe Play, passe os valores setados…
Play playGame = new Play(namePlayerOne,namePlayerTwo);
Agora você pode utilizar os valores setados no método que quiser…
playerOne = new JLabel(playerone);
caracas… espero que você tenha entendido… flw