Boa tarde diego12,
obrigado pela resposta.
Porque o programa não “espera” o clique do mouse, aí ele vem com os valores que eu inicializei as variáveis ‘linha’ e ‘coluna’.
Quando entra no método ‘posicionaNavio()’, ele já entra direto no loop e não deixa com que eu selecione um ‘botão’ onde quero posicionar o navio.
Essa é a minha dúvida, como fazer para ele ‘esperar’ o clique.
public void posicionaPlayer() {
int navios = 1, orientacao = 0, linha = 0, coluna = 0;
while(navios <= 5) {
navio = navio.constroiNavio(navios);
JOptionPane.showMessageDialog(
null, "Posicione o " + navio.getNome() + "."
+ "\nEsse navio ocupa " + navio.getTamanho() + " espaços."
+ "\nEscolha o primeiro espaço que ele irá ocupar...");
Object[] opcoes = {"Horizontal", "Vertical"};
orientacao = JOptionPane.showOptionDialog(null,
"Escolha a orientação do navio",
"Escolha",
JOptionPane.YES_NO_CANCEL_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
opcoes,
opcoes[1]);
linha = btn.getLinha();
coluna = btn.getColuna();
if(navio.getTamanho() != 0) {
if(orientacao < 2) {
if(linha < 10) {
if(coluna < 10) {
if(navio.posicionaNavio("C", orientacao, linha, coluna, navio, tabuleiroPlayer)) {
navios++;
}
}
else
posicionaPlayer();
}
else
posicionaPlayer();
}
else
posicionaPlayer();
}
else
posicionaPlayer();
}
navio.posicionaNavio("P", orientacao, linha, coluna, navio, tabuleiroPlayer);
}
Coloquei pra pegar a orientação (horizontal ou vertical) pelo JOptionPane pra ver se facilitava, mas a única coisa que faz é colocar o primeiro navio, na posição 0,0.
Dei uma lida no link que você botou. Se eu entendi bem, tá dando o StackOverFlowError pq eu instanciei o ‘selecionado’ dentro da classe Botão?