Gente… :oops:Estou com um dúvida babaca mas que nunca parei para pensar a respeito: Como obter o index do botão pressionado em uma JOptionPane.showMessageDialog() ou no JOptionPane.showInputDialog()?
Tipo assim:
(O seguinte código não funciona por causa dos pontos de interrogação)
[code]import javax.swing.JOptionPane;
public class Dialog {
public static void main(String[] args) {
JOptionPane.showInputDialog(null,"Testando");
System.out.println("Index do botão pressionado: "+?????);
}
Pois é…Esse exemplo de situação vale mais para o input. Preciso saber se o usuário inseriu um valor null ou se ele simplesmente cancelou, na minha aplicação isso faz diferença, já que o usuário não pode colocar um valor null, toda vez que ele dá OK sem colocar nada, aparece uma mensagem falando que ele deve inserir um valor, mas quando ele clica em cancelar aparece a mensagem pois o campo está null.
Se você precisa saber se o usuário teclou OK, Cancel ou fechou a caixa de diálogo com ESC, você tem de usar algum dos outros métodos (showConfirmDialog, showInputDialog, showOptionDialog etc) e checar o valor de retorno.
quando se precisa usar mais de um botão e descobrir qual foi apertado vc tem o OptionDialog…
exemplo modificado de uma classe minha aqui:
[code]String[] botoes = {“sim”,“não”, “talvez”};
int i = JOptionPane.showOptionDialog(null,"mensagem?","titulo",JOptionPane.CLOSED_OPTION,JOptionPane.QUESTION_MESSAGE,null,botoes,null);
if (i==0){
}else if (i==2){}...[/code]
Gente…
Descobri…e o problema era tão besta…
Quando a pessoa cancela, a variável (String) que receberia o valor da caixinha de texto fica com o valor “null” e quando a pessoa clica no OK sem colocar nehum valor, a variável fica com o valor “”
Dai é só testar o valor da variável para saber o que o usuário pressionou.
[code]import javax.swing.*;
public class teste
{
public static void main(String args[])
{
String aux;
aux=JOptionPane.showInputDialog(null, “Insira um valor ou simplesmente escolha um botão”);
if (aux.equals(null))
JOptionPane.showMessageDialog(null, "Você clicou no cancelar");
else
JOptionPane.showMessageDialog(null, "Você clicou no OK e seu texto é: "+aux);
}
}[/code]
Desculpa me entrometer, mas usei essa parte do codigo
" if (aux.equals(null)) "
e gerou um monte de exceção, então substitui o equals por == e parou com isso, funcionando normalmente.