Como identificar o "enter" em um botão que está em um JOptionPane?
5 respostas
P
PD1
Pessoal,
Estou utilizando um objeto da classe JOptionPane para exibir uma mensagem e ele contém três botões (sim, não, cancelar).
Daí um dos botões fica com o foco e isso pode ser alterado dando um “TAB”, mas quando o usuário clica no “ENTER”, ele não faz nada, ou seja, ele não interpreta isso como uma execução do botão, já se o usuário clicar no “ESPAÇO” ele interpreta corretamente e o software continua normalmente.
O que devo fazer para que quando o usuário clicar “ENTER” ele execute aquela funcionalidade do botão correspondente? Como capturo isso?
Você terá que adicionar um KeyLister, que é o “cara” que vai ficar escutando os eventos que acontecem no teclado. De uma pesquisa que aqui no guj mesmo você vai achar alguns exemplos. E também tem a documentação da api http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/KeyEvent.html
Flw
davidbuzatto
Para que você possa fazer isso vc vai ter que criar seu própio diálogo, pois não há como interceptar o evento de um botão de um optionpane.
T
thingol
http://www.devx.com/tips/Tip/14318 diz o que pode ser feito em um JDialog ou JFrame; entretanto, um botão que tem o foco de um JOptionPane deve ser acionado com a barra de espaços, não com ENTER (infelizmente). Se precisar REALMENTE disso, talvez você tenha de fazer uma subclasse de JOptionPane que tenha o comportamento desejado.
marciofermino
O amigo David tem toda rezao
vc precisa criar seu proprio dialogo
faz assim
cria um novo jframe e faça com que ele se pareca como um dialog ai sim vc vai poder
ter controle total de teclas e eventos.
peerless
da pra ser melhorado.. fiz correndo só pra testar a idéia do thingol