JOptionPane.showMessageDialog()

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: "+?????);

}

}
[/code]

Valeu gente! :thumbup:

Mas… pra que voce quer a index do botão apertado?

Só tem um botão a se apertar.

E no caso de showInputDialog se vir em branco ou nada foi digitado ou o botão cancelar foi 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.

Andei procurando um pouco mas não encontrei… eu acho que voce tem que criar seu proprio JDialog com a opções com os botões com seus Listeners.

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.

Basta olhar a documentação:

http://java.sun.com/javase/6/docs/api/javax/swing/JOptionPane.html

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]

Mas é que usando o OptionDialog não dá para fazer ele ser semelhante ao Input.

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]

Mas valeu gente! :thumbup:

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.

Só uma sugestão

Abraço