JOptionPane.InputDialog com ação na opção de seus botões

10 respostas
Suellen_Susu

Olá pessoal!!!

Estou finalizando meu TCC de informática e estou com uma pequena dúvida em relação ao JOptionPane.InputDialog, onde a caixa de dialogo exibida para inserção do nome do jogador, mostra os botoes ok e cancelar, porem ao ir no botao cancelar, ele ñ cancela a ação de inserir nome e fechar a janela, pelo contrário, ele segue no jogo.
Ai esta o código:

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);

Ja tentei por a opção d propriedade do JOptionPane, que seria JOptionPane.OK_CANCEL_OPTION mas além de ser do tipo int, e o nome q insiro ter q ser String, o próprio JOptionPane recusa ela, pois ja tenho o JOptionPane.INFORMATION_MESSAGE

Grata qm puder me ajudar!!! bjosss

10 Respostas

ViniGodoy

O que você quer fazer quando cancelar?

Sempre que alguém cancelar, aquela variável aux irá valer null. Se você, por exemplo, quiser sair do jogo, o código ficaria assim:

aux = JOptionPane.showInputDialog(null, "Aluno(a), digite seu nome para jogar!", "Nome do aluno(a):", JOptionPane.INFORMATION_MESSAGE); if (aux == null) { System.exit(0); }

Suellen_Susu

ViniGodoy:
O que você quer fazer quando cancelar?

Sempre que alguém cancelar, aquela variável aux irá valer null. Se você, por exemplo, quiser sair do jogo, o código ficaria assim:

aux = JOptionPane.showInputDialog(null, "Aluno(a), digite seu nome para jogar!", "Nome do aluno(a):", JOptionPane.INFORMATION_MESSAGE); if (aux == null) { System.exit(0); }

na verdade ñ seria exatamente sair, mas sim apenas fechar a janela de dialogo do JOptionPane

ViniGodoy

Nesse caso, troque o System.exit(0) por

dispose(); return;

Suellen_Susu

ViniGodoy:
Nesse caso, troque o System.exit(0) por

dispose(); return;

Desculpa dizer, mas continua com o mesmo erro, fecha o menu principal junto…

ViniGodoy

Então deixa só o return.
Pelo que vi, vc gostaria que o código que vem em seguida desse if não fosse executado. Não é necessário fechar a janela, mas sim, só impedir que a nova janela abra.

Suellen_Susu

É exatamente isso!!! e deu certo agora só com o return… ;D

e eproveitando o assunto, vc sabe se tem como formatar caixas de diálogo JOptionPane?

precisava mudar a formatação dlas para Comic Sans…

ViniGodoy

Vixi… não tem nenhum jeito trivial de se fazer isso.

Suellen_Susu

Nossa, que pena…

Queria dar uma impressão ao meu TCC de formatação pradrão, entende?

Se não fica muita mistura… mas mto Obrigada!!

ViniGodoy

Tente colocar essas instruções no construtor de sua janela. Só é necessário dar os comandos uma única vez:

//Tradução dos botões
UIManager.put("OptionPane.cancelButtonText", "Cancelar");
UIManager.put("OptionPane.noButtonText", "Não");
UIManager.put("OptionPane.yesButtonText", "Sim");

//Alteração da fonte
UIManager.put("OptionPane.font", "javax.swing.plaf.FontUIResource[family=dialog,name=Comig Sans,style=plain,size=12] ");

Você pode ver mais valores desses aqui:
http://www.guj.com.br/posts/list/23249.java#195562

Suellen_Susu
ViniGodoy:
Tente colocar essas instruções no construtor de sua janela. Só é necessário dar os comandos uma única vez:
//Tradução dos botões
UIManager.put("OptionPane.cancelButtonText", "Cancelar");
UIManager.put("OptionPane.noButtonText", "Não");
UIManager.put("OptionPane.yesButtonText", "Sim");

//Alteração da fonte
UIManager.put("OptionPane.font", "javax.swing.plaf.FontUIResource[family=dialog,name=Comig Sans,style=plain,size=12] ");

Você pode ver mais valores desses aqui:
http://www.guj.com.br/posts/list/23249.java#195562

Obrigada rapaz, mas consegui solucionar o problema!!! uma outra moça no fórum me auxiliou...

mas aproveitando sua passada por aqui, vi aquela lista no outro endereço que vc me passou, e queria tirar só mais uma dúvida:

se eu tenho um label, e passo o mouse sobre ele, como faço para ele 'ganhar' um sublinhado debaixo dele? (Como se fosse um link)

Criado 4 de junho de 2010
Ultima resposta 6 de jun. de 2010
Respostas 10
Participantes 2