Retorna null ao exibir os nomes dos players no Frame

4 respostas
hackum

Olá a todos!
Seguindo o meu código: http://codepaste.net/mzhssu
Estou tendo problemas ao exibir o nome do usuário no Frame, aqui:

playerOne = new JLabel(detail);
            add(playerOne); //add playerOne to Frame

Porém, estou recebendo o valor como null. Eu crio o objeto:

TicTacToe players = new TicTacToe();
//chamo
players.getPlayerOne();
playerOne = new JLabel(players.getPlayerOne());

Mas, eu recebo o valor como null. Por que isso ? O que faço para colocar o nome do player 1 e o player 2 no Frame ?

Obrigado!

4 Respostas

Marky.Vasconcelos

Por favor use nomes melhores para os topicos, na primeira pagina existe dois topicos diferentes com um titulo generico como “jogo simples”.

hackum

Sem problemas.

alanrodrigues

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

lina

Oi,

Olhe o seu código:

TicTacToe players = new TicTacToe(); //chamo players.getPlayerOne(); playerOne = new JLabel(players.getPlayerOne());

Onde está o setPlayerOne(String) para alimentar a variável e ter um retorno no get()?!

Tchauzin!

Criado 19 de julho de 2011
Ultima resposta 20 de jul. de 2011
Respostas 4
Participantes 4