Foco Joptionpane

Tenho esse código que verifica a senha do usuario acontece que o foco vai no botão do joptionpane e não no passwordfield, como faço para trocar o foco?
Muito obrigado a todos

[code]// Cria campo onde o usuario entra com a senha
JPasswordField password = new JPasswordField(10);
password.setEchoChar(’*’);

        // Cria um rótulo para o campo  
        JLabel rotulo = new JLabel("Entre com a senha:");  

        // Coloca o rótulo e a caixa de entrada numa JPanel:  
        JPanel entUsuario = new JPanel();  
        entUsuario.add(rotulo);  
        entUsuario.add(password);
        
       

        // Mostra o rótulo e a caixa de entrada de password para o usuario fornecer a senha:  
        
        JOptionPane.showMessageDialog(null, entUsuario, "Acesso restrito", JOptionPane.WARNING_MESSAGE);[/code]

Esse é o método que chama o foco para qualquer elemento. :wink:

password.requestFocus();

Não entendi muito bem vc quer que ao abrir a mensagem o foco fica no no edit da tela?

Se for é impossível pois o JoptionPane é uma janela modal sendo modal o frame perde todo o controle.

agora se vc quiser que após fechar o modal o foco volte para o edit
é so voce colocar o codigo na linha debaixo da do JoptionPane

password.grabFocus();

[quote=leonardobhbr]Não entendi muito bem vc quer que ao abrir a mensagem o foco fica no no edit da tela?

Se for é impossível pois o JoptionPane é uma janela modal sendo modal o frame perde todo o controle.

agora se vc quiser que após fechar o modal o foco volte para o edit
é so voce colocar o codigo na linha debaixo da do JoptionPane

password.grabFocus();

Então ja tentei usar o requestFocus mas não deu certo.
Você disse que é impossivel :frowning:
Preciso achar outra solução então. :?

Voce quer que o foco fique no input com o dialog aberto?

Quero que o foco fique no password field do joptionpane
pois quando chamo o joption pane o foco vai no botão de ok

Foi mal agora que eu entendi o panel ta no dialog?

http://tips4java.wordpress.com/2010/03/14/dialog-focus/

seuTextField.requestFocusInWindow();

E da uma olhada no link. :wink:

Faça assim

if(JOptionPane.showOptionDialog(null, entUsuario, "Acesso restrito", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, new String[]{"Logar", "Cancelar"}, password)== JOptionPane.YES_OPTION) { System.out.println("logou"); } else System.out.println("cancelou");

[quote=leonardobhbr]Faça assim

if(JOptionPane.showOptionDialog(null, entUsuario, "Acesso restrito", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, new String[]{"Logar", "Cancelar"}, password)== JOptionPane.YES_OPTION) { System.out.println("logou"); } else System.out.println("cancelou");[/quote]
PERFEITO!!!
Muito obrigado aos dois!!
Voces me quebraram um galhão!!

Apareceu outro problema ://
Agora os botões nao funcionam ao apertar enter
Eu tenho que clicar com o mouse

Amigo aconselho a vc não fazer uma tela de lgin em cima de um JOptionPane, aconselho voce utilizar um JDialog para isso.

Sobre o enter ter parado de funcionar, isso ocorre pois para podermos passar o campo que desejamos foco temos passar os botoes que irão aparecer na tela.

No swing os botões apenas sofrem ação com a barra de espaço ou com click, o enter realmente não funciona

[quote=leonardobhbr]Amigo aconselho a vc não fazer uma tela de lgin em cima de um JOptionPane, aconselho voce utilizar um JDialog para isso.

Sobre o enter ter parado de funcionar, isso ocorre pois para podermos passar o campo que desejamos foco temos passar os botoes que irão aparecer na tela.

No swing os botões apenas sofrem ação com a barra de espaço ou com click, o enter realmente não funciona[/quote]

Entendi.
No caso não seria uma tela de login , e sim confirmação de senha do gerente
Mas tentaria executar de outra maneira, obrigado!