Default no botão da janela ConfirmDialog

Galera,
Mandei escrever na tela uma mensagem utilizando o JOptionPane.showConfirmDialog… porem o botão default para o usuario apertar fica sendo o ‘YES’… eu gostaria de mudar para o ‘NO’…

Como proceder?

Obrigado!

Cara ai vai uma maneira de fazer


Object[] options = {"   Sim   ", "   Não   "}; 
int n = JOptionPane.showOptionDialog(null," Deseja realmente sair do programa ?","Sair do Programa", 
        JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null,options,options[1]);

 if(n == 0){
       System.exit(0); 
 }
        

esse carinha que faz isso : options[1]

Espero ter ajudado
abs

1 curtida

Cara,
funcionou… muito obrigado…

vou deixar o tópico em aberto, porque se alguem tiver alguma
solução com o Confirm tmb… será bem-vinda!

e assim, saberemos mais uma informação a respeito!

Abraços!

Gujeiros…

Estou com problema com a solução passada pelo amigo ali em cima…

Quando deixo a opção default no Cancelar e abro a caixa de mensagem, aparece certinho no default ‘Cancelar’… após isso, eu clico em ENTER. beleza… ele cancela e fecha a janela…

OK, abro ela de novo… e o fica por default ainda em Cancelar… porem quando mudo o focu apertando TAB para o OK e clico com o ENTER do teclado, a opção ainda fica no botão Cancelar… e nao executa o OK… =/

Só funciona normal com as teclas do Mouse e o Espaço do teclado…

Alguma solução… código abaixo:

// // Muda o nome dos botões da janela de mensagem. // Object[] options = { "OK", "Cancelar" }; // // Faz a pergunta. // int i = JOptionPane.showOptionDialog( null, "", "Sair", JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE, null, options, options[1] ); // // Se resposta for 'Abortar'. // if ( i == JOptionPane.YES_OPTION ) { // Finalize. } else { // // Fecha somenta a janela. // setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); }

cara tenta dar um sysout nesse cara aqui
JOptionPane.YES_OPTION

ele tem que ser igual a zero para ser o OK

abs

É que o default é associado a tecla enter.
Vc teria que associar o default ao seu botão OK ou sim, e o “DefaultCancel” ao Cancelar, que no caso usaria a tecla ESC.

Deixa ver se eu implemento algo…

Parece que o problema não está na solução dada pelo mmenezes , mas sim na própria implementação do “Joptionpane”. Executem o código abaixo:

[code]import javax.swing.JOptionPane;

public class Test {
public Test(){
int valor = JOptionPane.showConfirmDialog(null,“Teste”,
“Por favor, responda”,0);
System.out.println(valor);
}

public static void main(String args[]){
	Test t = new Test();
}

}[/code]

Cliquem no YES e vejam o resultado. (resultado = 0)
Depois Cliquem no NO e vejam o resultado. (resultado = 1)
Depois Dêem Tab(para que a seleção vá para o NO), teclem enter e vejam o resultado. Não muda! O retorno continua sendo zero, ou seja, do YES.
…é como se tivéssemos que implementar um KeyListener para que ao teclar Tab a seleção vá de fato para o NO.

Mas como fazer isso para um JoptionPane?! Idéias?!