Olá pessoal, td bm?
Preciso de ajuda urgente pro meu TCC!!!
Estou fazedno um quiz em java e é o seguinte: tenho um JFrame principal (como menu principal do jogo), e qndo o usuário clica em um nível de jogo, mostra uma caixa de dialogo InputDialog, para ele digitar o nome. O código deste trecho segue abaixo:
new playerIII();
aux = JOptionPane.showInputDialog(null, "Aluno(a), digite seu nome para jogar!", "Nome do aluno(a):", JOptionPane.INFORMATION_MESSAGE);
pontos.nome = aux;
pontos.nivel="Fácil";
this.dispose();
new NewJFrame().setVisible(true);
Porém, ao terminar as perguntas e exibir o JFrame de Recordes, o nome do usuário é mostrado em um label. Mas ao clicar no botao para salvar a pontuação, apenas seu nome não é salvo. Segue abaixo o código do botao q salva pontuação:
new playerIII();
if(BD.getConnection())
{
String sql = "";
sql = "INSERT INTO recordes (nome, nivel, pontuacao) Values('" +
pontos.nome + "','" +
pontos.nivel + "','" +
pontos.ponto + "')";
int r = BD.runSQL(sql);
}
new certosom();
JOptionPane.showMessageDialog(null, "Sua pontuação foi salva!","Recorde:",JOptionPane.INFORMATION_MESSAGE);
if (pontos.id > 0)
{
pontos.id = 1;
}
this.dispose();
new menu().setVisible(true);
Por favor, me judem, tcc pra entregar ja em junho!!!
bjossss e obrigada!!!
o engraçado é q tipo: ao lado da tabela de recordes, tenho tres label’s, onde um mostra o nome do jogador, digitado no inputdialog, outro o nivel em q ele jogou e outro sua pontuação.
Só q qndo vc clika no botao salvar pontuação, ele salva somente o nivel e os pontos, somente o nome q ñ!
Ou seja, ele ta reconhecendo o q digitei no inputdialog, tanto é q mostra no label, mas ele ñ mostra nada qndo vc manda ele pro mysql!!!
Retire o this.dispose() e coloque depois do setVisible(true); ou em qualquer outro lugar.
Provavelmente está perdendo a refêrencia.
new playerIII();
aux = JOptionPane.showInputDialog(null, "Aluno(a), digite seu nome para jogar!", "Nome do aluno(a):", JOptionPane.INFORMATION_MESSAGE);
pontos.nome = aux;
pontos.nivel="Fácil";
// this.dispose();
new NewJFrame().setVisible(true);
Pessoal, vlw pela ajuda, mas consegui encontrar o problema!!!
neste código:
new playerIII();
if(BD.getConnection())
{
String sql = "";
sql = "INSERT INTO recordes (nome, nivel, pontuacao) Values('" +
pontos.nome + "','" +
pontos.nivel + "','" +
pontos.ponto + "')";
int r = BD.runSQL(sql);
}
new certosom();
JOptionPane.showMessageDialog(null, "Sua pontuação foi salva!","Recorde:",JOptionPane.INFORMATION_MESSAGE);
if (pontos.id > 0)
{
pontos.id = 1;
}
this.dispose();
new menu().setVisible(true);
a linha onde mostra a variavel pontos.nome deve ser trocada correspondente ao jLabel em q eu exibe o valor digitado, pq como disse antes, o nome digitado é mostrado em um label, e depois salvo na tabela. Entao, para dar certo, ñ se joga a variavel direto pra tabela (q no caso é pontos.nome) mas sim aonde ela está sendo mostrada (q é o jLabel correspondente)
segue abaixo o código corrigido:
new playerIII();
if(BD.getConnection())
{
String sql = "";
sql = "INSERT INTO recordes (nome, nivel, pontuacao) Values('" +
jLabel4.getText() + "','" +
pontos.nivel + "','" +
pontos.ponto + "')";
int r = BD.runSQL(sql);
}
new certosom();
JOptionPane.showMessageDialog(null, "Sua pontuação foi salva!","Recorde:",JOptionPane.INFORMATION_MESSAGE);
if (pontos.id > 0)
{
pontos.id = 1;
}
this.dispose();
new menu().setVisible(true);